shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Script dando maior trabalho...


From: pythondeveloper
Subject: Re: Script dando maior trabalho...
Date: Tue, 23 May 2006 11:39:59 -0000
User-agent: eGroups-EW/0.82

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 address@hidden, Mauricio <ricio_rs_osw@y...>
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: address@hidden
> > ---------------------------------------------------------------------
> > 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
> > 
> >
>






reply via email to

[Prev in Thread] Current Thread [Next in Thread]