Shell Script

1. Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 10:57h

Eae galera,

Sou iniciante no shell e estou com algumas duvidas,
Preciso criar um programa de Gerenciamento de usuários (adicionar usuários, remover, listar e etc.), e minh a dúvida é a seguinte:

Eu entro com login, e gostaria que me fosse avisado quando usuário fosse existente, e com isso ele retorne pedindo para digitar novo login.

meu script esta assim:

adicionar() {
clear
echo "Digite o login do usuario:"
read nome
adduser $nome
echo "Digite a senha"
read senha

menu

galera, a quem puder ajudar eu agradeço.



  


2. Re: Shell Script

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 15/03/2012 - 11:01h

pode usar um if para testar se o usuário já tem no sistema


3. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 11:04h

Certo, o problema é que nao consegui montar nenhuma condição ou variável.



4. Re: Shell Script

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 15/03/2012 - 11:30h

Seria isso?


#!/bin/bash

echo 'Digite o usuario: '
read user

cat /etc/passwd | cut -d: -f1 | grep $user &> /dev/null
if [ $? -eq 0 ]; then

echo 'Usuario $user existe'

else

adduser $user

fi



5. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 11:44h

Alexandre, deu erro na sintaxe...
mas ali no grep nao deveria antes ter um cut ou algo do tipo?
junto com um |?


6. Re: Shell Script

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 15/03/2012 - 11:49h

Aqui deu certo, executa seu script com sh -x e posta o debug aqui.


7. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 11:56h


#!/bin/bash

#Augusto Pereira dos Santos
#Guilherme Minotto

menu () {

echo "+-----------------------------------------------------------+"
echo "| Opcao Acao |"
echo "| ===== ==== |"
echo "| 1 Adicionar novo usuario |"
echo "| 2 Remover usuario |"
echo "| 3 Pesquisar usuario |"
echo "| 4 Listar cadastro de todos usuarios |"
echo "| 5 Trocar a senha de acesso do usuario |"
echo "| 6 Sair do programa |"
echo "| |"
echo "| Escolha uma das opcoes acima: |"
echo "+-----------------------------------------------------------+"


read OPCAO
case $OPCAO in

1) adicionar ;;

2) excluir ;;

3) pesquisar ;;

4) listar ;;

5) trocar ;;

6) sair ;;

*) volta ;;
esac
}

adicionar() {
clear
echo "Digite o nome do usuario:"
read nome
grep $nome /etc/passwd &> /dev/null
if [ $? -eq 0 ]; then

echo "usuario $nome ja existe"
else

dadicionar ()
fi
menu
}

excluir() {
clear
echo "Digite o login do usuario que deseja exclui:"
read exuser
userdel $exuser
menu
}

pesquisar() {
clear
echo "Digite o nome do usuario a ser encontrado:"
read usuario
grep $usuario /etc/passwd
menu
}

listar() {
clear
echo "lista de todos os usuarios do sistema: pressione 'q' para sair"
sleep 4
less /etc/passwd
menu
}

trocar() {
clear
echo "Digite o login de usuario que deseja alterar a senha:"
read usu
passwd $usu
menu
}

sair() {
clear
exit
}

volta() {
clear
echo "Digite uma opcao valida:"
menu
}
menu



8. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 11:57h

line 52: erro de sintaxe próximo do token nao esperado 'fi'
line 52: 'fi'




9. Re: Shell Script

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 15/03/2012 - 12:16h

Mas vc copiou o código errado!!!
Te passei desta forma:


#!/bin/bash
if [ $? -eq 0 ]; then

echo "usuario $nome ja existe"

else

adduser $user

fi





10. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 13:23h

Entao Alexandre, ele esta funcionando.
O problema é o Else que nao esta mais funcionando.
Quando da o nome repetido, ele encerra o programa.

else
adduser $nome


11. Re: Shell Script

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 15/03/2012 - 14:06h

Então, vi que sua função está da seguinte forma:


..
..
else

dadicionar ()

fi


Isso vai dar erro, pois vc criou uma função chamada dadicionar() que não existe em seu programa, por isso o erro na linha 52.
Matou a charada?
Se o usuário já existir, o script vai retornar à funçao menu().


12. Re: Shell Script

Guilherme Minotto
minotto

(usa CentOS)

Enviado em 15/03/2012 - 14:36h

Rs, tinha visto isso antes. Mas então funcionou, mas preciso que se o user ja existir, ele volte a pedir um nome novamente.
[Cara, to te enchendo mas agradeço mesmo pela força hein]



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts