Eu entendi o que vc está fazendo com grep, o meu comentário evidencia a você que a maneira que vc encontrou está incompleta, ou seja, dá
margem vários resultados. Mas grep e egrep aceitam expressões regulares, que podem definir melhor o que vc está procurando. Eu não tenho o
executável groupadd em minha distro. Então, dentro do seu algoritmo, não posso ajudá-lo. Normalmente vc executa um comando e armazena a
saída padrão dele numa variável desse jeito:
CONTEUDO=`ls` (acento grave)
ou
CONTEUDO=$(ls)
Mas... Fernando. Veja um resumo disso em
http://aurelio.net/shell/canivete.html
Você vai encontrar esses casos e muitos outros...
E pegue algum material em
http://aurelio.net/shell/#livros
Bom estudo!
pythondeveloper wrote:
> Maurício
>
> Mas como eu faço pra pegar o retorno desse groupadd ? Pelo que vi sua
> distro naum tem esse comando.
>
> Com o "grep /etc/group" eu quero verificar se ja existe o grupo
> cadastrado, se naum tiver tenho que adiciona-lo.
>
> []'s
> Fernando Paiva
>
>
> --- Em [email protected], Mauricio <[EMAIL PROTECTED]>
> escreveu
>> Olá Pythondeveloper...
>>
>> Você precisa dar uma olhada em algumas coisas, substituições de
> variáveis... e eu diria que repensar seu algoritmo seria uma boa... o
> mais
>> simples pode fazer melhor e mais rápido além de ser mais inteligível :-)
>>
>> Seguem comentários....
>>
>> pythondeveloper wrote:
>>> Salve salve galera...
>>>
>>> Estou criando um script para adicionar um usuario no Linux e assim que
>>> cadastrar o usuario ele ja esteja cadastrado no samba. Vejam.
>>>
>>> #!/bin/bash
>>> # Cadastra Usuarios
>>> clear
>>> Principal () {
>>> echo "Deseja cadastrar um novo usuario para o sistema? [sn]"
>>> read resposta
>>> if [ $resposta != 's' -a $resposta != 'n' ]; then
>> Aqui a variável resposta precisa estar entre aspas, para o caso do
> usuário apertar somente um enter...
>> if [ "$resposta" != 's' -a "$resposta" != 'n' ]; then
>>
>>> echo "Voce precisa decidir por s ou n"
>>> exit
>>> fi
>>>
>>> if [ -z $resposta ]; then
>>> echo "Informe a opcao desejada"
>>> exit
>>> fi
>> Essa parte nunca vai ser usada, pois na sua condição anterior vc diz
> pra imprimir 'Você precisa bla, bla...' em qualquer situação onde a
>> variável resposta não seja 's' ou 'n', inclusive a mesma ser nula,
> compreende?
>>
>>
>>> test $resposta = "n" && exit
>> Então tudo isso poderia ser resumido num 'case', por exemplo. Acho
> que dei um exemplo no mail-resposta da sua questão anterior.
>>
>>
>>
>>
>>> echo "Digite o nome do usuario:"
>>> read nome
>>> if [ -z $nome ]; then
>> Aqui vc deve proteger a variável. Aliás proteger a variável é sempre
> bom quando se tem dúvidas... :-)
>> if [ -z "$nome" ]; then
>>
>>
>>
>>> echo "Informe o nome"
>>> exit
>>> fi
>>>
>>> echo "Digite o grupo que o usuario ira participar:"
>>> read grupo
>>> if [ -z $grupo ]; then
>>
>> mesmo caso anterior, aspas nas variáveis!!!
>>
>> if [ -z "$grupo" ]; then
>>
>>> echo "Grupo vazio"
>>> exit
>>> fi
>>>
>>> cat /etc/group | grep $grupo
>>
>> veja, aqui sem proteger a variável vc escapa dela ser nula porque já
> verificou no item anterior, mas se o usuário tiver digitado um nome com
>> espaços???
>>
>> cat /etc/group | grep "$grupo"
>>
>> Outra coisa, quando for ler um arquivo com grep, faça direto, assim
> vc evita o pipe:
>> grep "$grupo" /etc/group
>>
>> mais uma coisa: se você digita 'users' ou 'user' ou 'us' no item
> grupo o grep vai achar o grupo users em todos os casos. Vc precisa
> estudar
>> expressões regulares pra melhorar isso....
>>
>>
>>
>>
>>> if [ $? = 0 ]; then
>>> echo "O grupo ( $grupo ), e necessario um grupo valido para
>>> continuar, devo adicionar o grupo $grupo ?[sn]"
>>> read AdicionaGrupo
>>> fi
>> essa verificação se torna falha devido ao grep anterior... Estude ERs...
>>
>>
>>
>>
>>> if [ $AdicionaGrupo != 's' -a $AdicionaGrupo != 'n' ]; then
>>> echo "Voce precisa decidir por s ou n"
>>> exit
>>> fi
>>>
>>> if [ $AdicionaGrupo = 's' ]; then
>>> groupadd $grupo
>> e se o grupo tem dois nomes??? Aspas, aspas, aspas!!
>>
>>
>>> echo "O grupo ( $grupo ), foi adicionado com sucesso"
>> aqui vc não garante que o grupo foi adicionado com sucesso, qualquer
> que seja o resultado do groupadd o echo com certeza será executado e
>> exibira essa mensagem na tela... estude os códigos de retorno do
> comando groupadd... na distribuição que uso eu nem tenho esse comando...
>> por isso não pude testar :-(
>>
>>> else
>>> echo "E preciso um grupo valido para continuar"
>>> exit
>>> fi
>>>
>> Então, a partir daqui tem um monte de coisinhas que vc tem que
> mudar... dá uma lida no que escrevi e aplica no resto do script...e
> veja se
>> vc consegue chegar mais adiante... se for o caso poste novamente...
>>
>>
>> Abraço,
>> maurício
>>
>>
>>
>>
>>> echo "Digite o login do usuario:"
>>> read login_
>>> if [ -z $login_ ]; then
>>> echo "Informe o login"
>>> exit
>>> fi
>>>
>>> grep $login_ /etc/passwd ; echo "Procurando por $login_"
>>> if [ $? = 0 ]; then
>>> echo "O usuario $login_, ja esta cadastrado no sistema"
>>> exit
>>> else
>>> useradd -g $grupo -c "$nome" -m -d /home/"$login_" $login_
>>> fi
>>>
>>> echo "Senha para usuario $login:"
>>> passwd $login_
>>>
>>> echo "Deseja que $login_ esteja no Samba ?[sn]"
>>> read Resposta_Samba
>>> if [ -z $Resposta_Samba ]; then
>>> echo "Escolha s ou n"
>>> exit
>>> fi
>>>
>>> if [ $Resposta_Samba = 's' ]; then
>>> CadastraSamba
>>> else
>>> echo "Usuario $login_, cadastrado no sistema com sucesso..."
>>> id $login_
>>> Principal
>>> fi
>>> }
>>>
>>> CadastraSamba(){
>>> echo "Digite a senha para o samba:"
>>> smbpasswd -a $login_
>>> killall smbd -HUP
>>> killall nmbd -HUP
>>> Principal
>>> }
>>> Principal
>>>
>>> #EOF
>>>
>>> 1) Onde eu Adiciono o "Nome" do usuário, se estiver com espacos da
>>> erro...exemplo:
>>> Nome do Usuario
>>> Fernando Paiva
>>>
>>> Da o seguinte erro => /usr/sbin/cadastrausuario: line 20: [: Fernando:
>>> binary operator expected
>>>
>>> 2) No comando grep quero pegar o retorno se ele encontrou ou nao uma
>>> ocorrencia do nome do grupo no arquivo "/etc/group"
>>>
>>> 3) Tem horas que ele adiciona o grupo, mas cria uma copia do arquivo
>>> "group" em /etc ficando os dois arquivos assim
>>>
>>> group- group
>>>
>>> Não estou entendendo o pq acontece esses erros, as sintaxes estao
>>> erradas ?
>>>
>>> desde ja, agradeço
>>> []'s
>>> Fernando Paiva
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir esta regra
> será moderado sem prévio aviso.
>>> ---------------------------------------------------------------------
>>> Sair da lista: [EMAIL PROTECTED]
>>> ---------------------------------------------------------------------
>>> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
>>> ---------------------------------------------------------------------
>>> Servidor Newsgroup da lista: news.gmane.org
>>> Grupo: gmane.org.user-groups.programming.shell.brazil
>>>
>>>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
| Yahoo! Grupos, um serviço oferecido por: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/shell-script/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.
