Ajuda com script de usuarios

1. Ajuda com script de usuarios

Jasquel Sa
jasquelp86

(usa CentOS)

Enviado em 16/11/2014 - 12:12h

Pessoal,

Preciso muito da ajuda de vocês... Estou criando um script para gerenciamento de usuarios mas não estou tendo sucesso. O q estou errando ?

#!/bin/bash
principal () {
clear #--> Apagando a tela
echo "*************************************************************************"
echo " BEM VINDO AO GERENCIAMENTO DE USUARIOS "
echo " SELECIONE UMA OPÇÃO "
echo -e "***********************************************************************\n" #o -e encara o \n como um comando e não string.
echo " MENU PRINCIPAL"
echo " 1 - CRIAR USUARIO"
echo " 2 - CRIAR GRUPO"
echo " 3 - ADICIONAR USUARIO AO GRUPO"
echo " 4 - REMOVER USUARIO"
echo " 5 - REMOVER GRUPO"
echo " 6 - QUANTIDADE MINIMA DE DIAS PARA TROCA DE SENHA"
echo " 7 - QUANTIDADE MAXIMA DE DIAS PARA TROCA DE SENHA"
echo " 8 - QUANTIDADE MAXIMA DE DIAS PARA AVISAR O USUARIO A TROCAR SUA SENHA"
echo " 9 - MOSTRAR GRUPOS QUE USUARIO PARTICIPA"
echo -e " 0 - SAIR\n"

read -p " Entre com sua opção: " OPT #--> O READ LE O TECLADO, o -e encara o \n como um comando e não string.

case $OPT in
1) novoUsuario;;
2) novoGrupo;;
3) novoUsuarioEmGrupo;;
4) removeUsuario;;
5) removeGrupo;;
6) quantMinTrocaSenha;;
7) quantMaxTrocaSenha;;
8) avisarTrocaSenha;;
9) gruposDoUsuario;;
0) clear;exit;;
*) echo "Opção inválida!";;
esac

}

# FUNÇÃO 1 - FUNÇÃO PARA CRIAR UM USUARIO

novoUsuario() {
clear
echo "Informe o nome do usuário: "
read NOVOUSUARIO

if [ -z "$NOVOUSUARIO" ]; then # VERIFICA DE O LOGIN ESTÁ VAZIO
echo "O LOGIN DIGITADO ESTA VAZIO, DIGITE UM LOGIN VALIDO!"; sleep 2 ; criarUsuario

elif echo $NOVOUSUARIO | egrep '[],!,@,#,$,%,&,*,(,),=,+,§,ª,º,{,},/,[\,?,,:,~,^,_,., ,]'; then # VALIDANDO SE O USUARIO DIGITADO POSSUI CARACTERES ESPECIAIS COM REGEX
echo "O USUARIO NAO PODE CONTER CARACTERES ESPECIAIS. TENTE NOVAMENTE!"; sleep 2; criarUsuario

else
NOVOUSUARIO=`echo $NOVOUSUARIO | tr "[:upper:]" "[:lower:]";` #--> PESQUISANDO SE EXISTE USUÁRIO. A CRASE FAZ MOSTRAR O VALOR DA VARIAVEL
grep $NOVOUSUARIO /etc/passwd > /dev/null #--> PROCURANDO O USERNAME NA PASTA ETC/PASSWD. DIRECIONEI PARA O /DEV/NULL PARA NAO RETORNAR NA TELA
fi

if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO USUARIO FOR = 0 ELE ENTENDE QUE USUARIO JA EXISTE E VOLTA AO MENU PRINCIPAL.
echo "O USUARIO $NOVOUSUARIO JÁ EXISTENTE!" sleep 3 ; principal
else
adduser $NOVOUSUARIO --home /home/$NOVOUSUARIO # ESTOU CRIANDO O /HOME PARA O USUARIO DIGITADO, POIS SE EU NÃO UTILIZAR O --/HOME O DIRETÓRIO NAO CRIA AUTOMATICAMENTE.
echo "USUARIO $NOVOUSUARIO CADASTRADO COM SUCESSO!"; sleep 3; principal
fi

}

# FUNÇÃO 2 - FUNÇÃO PARA CRIAR GRUPO

novoGrupo() {
clear
echo "Informe o nome do grupo que deseja criar: "
read NOVOGRUPO

if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO GRUPO FOR = 0 ELE ENTENDE QUE O GRUPO JA EXISTE E VOLTA AO MENU PRINCIPAL.
echo "GRUPO $NOVOGRUPO JA EXISTE!" sleep 3 ; principal
else
addgroup $NOVOGRUPO
echo "GRUPO $NOVOGRUPO CRIADO COM SUCESSO!"
return
}

# FUNÇÃO 3 - FUNÇÃO PARA ADICIONAR UM USUARIO NOVO EM UM GRUPO ESPECIFICO E JÁ EXISTENTE

novoUsuarioEmGrupo() {
clear
echo "Informe o nome do usuario: "
read NOVOUSUARIO
echo "Informe o nome do grupo existente: "
read NOMEGRUPO
if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO GRUPO FOR = 0 ELE ENTENDE QUE O GRUPO JA EXISTE E VOLTA AO MENU PRINCIPAL.
adduser $NOVOUSUARIO --home /home/$NOVOUSUARIO --ingroup $NOMEGRUPO # NESTA LINHA ESTOU ADICIONANDO O USUARIO DIGITADO NO GRUPO EXISTENTE.
else
echo "NÃO FOI POSSSÍVEL ADICIONAR O USUARIO AO GRUPO, POIS O GRUPO NAO EXISTE!"; sleep 3 ; novoUsuarioEmGrupo()
return
}

# FUNÇÃO 4 - FUNÇÃO PARA REMOVER UM USUARIO

removeUsuario() {
clear
echo "Informe o nome do usuário que deseja excluir: "
read usuario
userdel -rf $usuario # O RF FAZ COM QUE AO EXCLUIR UM USUARIO EU TB EXCLUA O /HOME DELE. R=REMOVE E F= FORCE
echo "USUARIO EXCLUIDO COM SUCESSO!"; sleep 3 ; principal
return
}

# FUNÇÃO 5 - FUNÇÃO PARA REMOVER UM GRUPO

removeGrupo() {
clear
echo "Grupos Existentes: "; cat etc/group # COM O COMANDO CAT ESTOU LENDO O QUE EXISTE DENTRO DO DIRETORIO GROUP E LISTANDO.
echo "Informe o nome do grupo que deseja excluir: "
read GRUPO
groupdel $GRUPO
return
}


# FUNÇÃO 6 - FUNÇÃO PARA CONFIGURAR A QUANTIDADE MINIMA DE DIAS PARA REALIZAR A TROCA DE SENHA

quantMinTrocaSenha() {
clear
echo "Informe o nome do usuario que deseja configurar a troca de senha: "
read USUARIO
echo "Informe a quantidade minima de dias para a troca da senha: "
read DIAS
chage $USUARIO --mindays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O MINDAYS É O MINIMO DE DIAS
return
}


# FUNÇÃO 7 - FUNÇÃO PARA CONFIGURAR A QUANTIDADE MAXIMA DE DIAS PARA REALIZAR A TROCA DE SENHA

quantMaxTrocaSenha() {
clear
echo "Entre com o nome do usuario a ser editado: "
read USUARIO
echo "Entre com a quantidade máxima (em dias) para troca de senha: "
read DIAS
chage $USUARIO --maxdays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O MAXDAYS É O MAXIMO DE DIAS
return
}

# FUNÇÃO 8 - FUNÇÃO PARA CONFIGURAR UM AVISO PARA QUE O USUARIO TROQUE SUA SENHA

avisarTrocaSenha() {
clear
echo "Informe o nome do usuario a ser editado: "
read USUARIO
echo "Informe a quantidade de dias para o aviso de alteração da senha: "
read DIAS
chage $USUARIO --warndays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O WARNDAYS É O NUMERO DE DIAS ANTES DE EXPIRAR A SENHA
return
}


# FUNÇÃO 9 - FUNÇÃO PARA LISTAR OS GRUPOS QUE UM USUARIO PARTICIPA

gruposDoUsuario() {
clear
echo "Informe o nome do usuario a ser visualizado: "
read USUARIO
clear
echo "GRUPOS QUE O USUARIO $USUARIO PARTICIPA: "
echo
groups $usuario # O COMANDO GROUPS MOSTRA OS NOMES DOS GRUPOS QUE O USUARIO EM QUESTÃO ESTÁ INSERIDO.
return
}


echo "*** ATENÇÃO: PARA EXECUTAR ESTE SCRIPT É NECESSÁRIO TER PRIVILÉGIOS DE ROOT"
sleep 1

until [$OPT != 0]; do # O COMANDO UNTIL FAZ O CONTRÁRIO DO QUE INSERIDO DENTRO DOS COLCHETES
clear
principal
escolha "$OPT"
read > /dev/null # CASO O VALOR NAO SEJA NENHUM DESCRITO NO MENU, ELE ELIMINA ESTE COMANDO.
done
clear



  


2. Re: Ajuda com script de usuarios

Wagner Souza
wagnerfs

(usa Fedora)

Enviado em 16/11/2014 - 12:24h

Executa o comando sh -x script para entrar no modo de depuração e você ver onde ele apresenta o erro


3. Re: Ajuda com script de usuarios

Wagner Souza
wagnerfs

(usa Fedora)

Enviado em 16/11/2014 - 14:26h

Prezado, corrigir a parte do código que estava apresentando erro. Expecificamente na linha 78 e 93 onde estava faltando a estrutura fi após o return. Fiz as devidas correções e rodou aqui de boa, porém, não pude testar todas as opções do seu script por estar sem tempo. Teste o código todo e veja se não aparece mais nenhum problema. Segue abaixo o código corrigido:


---------------------------------------


#!/bin/bash
principal () {
clear #--> Apagando a tela
echo "*************************************************************************"
echo " BEM VINDO AO GERENCIAMENTO DE USUARIOS "
echo " SELECIONE UMA OPÇÃO "
echo -e "***********************************************************************\n" #o -e encara o \n como um comando e não string.
echo " MENU PRINCIPAL"
echo " 1 - CRIAR USUARIO"
echo " 2 - CRIAR GRUPO"
echo " 3 - ADICIONAR USUARIO AO GRUPO"
echo " 4 - REMOVER USUARIO"
echo " 5 - REMOVER GRUPO"
echo " 6 - QUANTIDADE MINIMA DE DIAS PARA TROCA DE SENHA"
echo " 7 - QUANTIDADE MAXIMA DE DIAS PARA TROCA DE SENHA"
echo " 8 - QUANTIDADE MAXIMA DE DIAS PARA AVISAR O USUARIO A TROCAR SUA SENHA"
echo " 9 - MOSTRAR GRUPOS QUE USUARIO PARTICIPA"
echo -e " 0 - SAIR\n"

read -p " Entre com sua opção: " OPT #--> O READ LE O TECLADO, o -e encara o \n como um comando e não string.

case $OPT in
1) novoUsuario;;
2) novoGrupo;;
3) novoUsuarioEmGrupo;;
4) removeUsuario;;
5) removeGrupo;;
6) quantMinTrocaSenha;;
7) quantMaxTrocaSenha;;
8) avisarTrocaSenha;;
9) gruposDoUsuario;;
0) clear;exit;;
*) echo "Opção inválida!";;
esac

}

# FUNÇÃO 1 - FUNÇÃO PARA CRIAR UM USUARIO

novoUsuario() {
clear
echo "Informe o nome do usuário: "
read NOVOUSUARIO

if [ -z "$NOVOUSUARIO" ]; then # VERIFICA DE O LOGIN ESTÁ VAZIO
echo "O LOGIN DIGITADO ESTA VAZIO, DIGITE UM LOGIN VALIDO!"; sleep 2 ; criarUsuario

elif echo $NOVOUSUARIO | egrep '[],!,@,#,$,%,&,*,(,),=,+,§,ª,º,{,},/,[\,?,,:,~,^,_,., ,]'; then # VALIDANDO SE O USUARIO DIGITADO POSSUI CARACTERES ESPECIAIS COM REGEX
echo "O USUARIO NAO PODE CONTER CARACTERES ESPECIAIS. TENTE NOVAMENTE!"; sleep 2; criarUsuario

else
NOVOUSUARIO=`echo $NOVOUSUARIO | tr "[:upper:]" "[:lower:]";` #--> PESQUISANDO SE EXISTE USUÁRIO. A CRASE FAZ MOSTRAR O VALOR DA VARIAVEL
grep $NOVOUSUARIO /etc/passwd > /dev/null #--> PROCURANDO O USERNAME NA PASTA ETC/PASSWD. DIRECIONEI PARA O /DEV/NULL PARA NAO RETORNAR NA TELA
fi

if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO USUARIO FOR = 0 ELE ENTENDE QUE USUARIO JA EXISTE E VOLTA AO MENU PRINCIPAL.
echo "O USUARIO $NOVOUSUARIO JÁ EXISTENTE!" sleep 3 ; principal
else
adduser $NOVOUSUARIO --home /home/$NOVOUSUARIO # ESTOU CRIANDO O /HOME PARA O USUARIO DIGITADO, POIS SE EU NÃO UTILIZAR O --/HOME O DIRETÓRIO NAO CRIA AUTOMATICAMENTE.
echo "USUARIO $NOVOUSUARIO CADASTRADO COM SUCESSO!"; sleep 3; principal
fi

}

# FUNÇÃO 2 - FUNÇÃO PARA CRIAR GRUPO

novoGrupo() {
clear
echo "Informe o nome do grupo que deseja criar: "
read NOVOGRUPO

if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO GRUPO FOR = 0 ELE ENTENDE QUE O GRUPO JA EXISTE E VOLTA AO MENU PRINCIPAL.
echo "GRUPO $NOVOGRUPO JA EXISTE!" sleep 3 ; principal
else
addgroup $NOVOGRUPO
echo "GRUPO $NOVOGRUPO CRIADO COM SUCESSO!"
return
fi
}

# FUNÇÃO 3 - FUNÇÃO PARA ADICIONAR UM USUARIO NOVO EM UM GRUPO ESPECIFICO E JÁ EXISTENTE

novoUsuarioEmGrupo() {
clear
echo "Informe o nome do usuario: "
read NOVOUSUARIO
echo "Informe o nome do grupo existente: "
read NOMEGRUPO
if [$? -eq 0];then # SE O RETORNO DA INCLUSAO DO GRUPO FOR = 0 ELE ENTENDE QUE O GRUPO JA EXISTE E VOLTA AO MENU PRINCIPAL.
adduser $NOVOUSUARIO --home /home/$NOVOUSUARIO --ingroup $NOMEGRUPO # NESTA LINHA ESTOU ADICIONANDO O USUARIO DIGITADO NO GRUPO EXISTENTE.
else
echo "NÃO FOI POSSSÍVEL ADICIONAR O USUARIO AO GRUPO, POIS O GRUPO NAO EXISTE!"; sleep 3 ; novoUsuarioEmGrupo()
return
fi
}

# FUNÇÃO 4 - FUNÇÃO PARA REMOVER UM USUARIO

removeUsuario() {
clear
echo "Informe o nome do usuário que deseja excluir: "
read usuario
userdel -rf $usuario # O RF FAZ COM QUE AO EXCLUIR UM USUARIO EU TB EXCLUA O /HOME DELE. R=REMOVE E F= FORCE
echo "USUARIO EXCLUIDO COM SUCESSO!"; sleep 3 ; principal
return
}

# FUNÇÃO 5 - FUNÇÃO PARA REMOVER UM GRUPO

removeGrupo() {
clear
echo "Grupos Existentes: "; cat etc/group # COM O COMANDO CAT ESTOU LENDO O QUE EXISTE DENTRO DO DIRETORIO GROUP E LISTANDO.
echo "Informe o nome do grupo que deseja excluir: "
read GRUPO
groupdel $GRUPO
return
}


# FUNÇÃO 6 - FUNÇÃO PARA CONFIGURAR A QUANTIDADE MINIMA DE DIAS PARA REALIZAR A TROCA DE SENHA

quantMinTrocaSenha() {
clear
echo "Informe o nome do usuario que deseja configurar a troca de senha: "
read USUARIO
echo "Informe a quantidade minima de dias para a troca da senha: "
read DIAS
chage $USUARIO --mindays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O MINDAYS É O MINIMO DE DIAS
return
}


# FUNÇÃO 7 - FUNÇÃO PARA CONFIGURAR A QUANTIDADE MAXIMA DE DIAS PARA REALIZAR A TROCA DE SENHA

quantMaxTrocaSenha() {
clear
echo "Entre com o nome do usuario a ser editado: "
read USUARIO
echo "Entre com a quantidade máxima (em dias) para troca de senha: "
read DIAS
chage $USUARIO --maxdays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O MAXDAYS É O MAXIMO DE DIAS
return
}

# FUNÇÃO 8 - FUNÇÃO PARA CONFIGURAR UM AVISO PARA QUE O USUARIO TROQUE SUA SENHA

avisarTrocaSenha() {
clear
echo "Informe o nome do usuario a ser editado: "
read USUARIO
echo "Informe a quantidade de dias para o aviso de alteração da senha: "
read DIAS
chage $USUARIO --warndays $DIAS # O COMANDO CHAGE É UTILIZADO PARA MUDAR INFORMAÇÕES DO USUARIO SOBRE SENHAS E O WARNDAYS É O NUMERO DE DIAS ANTES DE EXPIRAR A SENHA
return
}


# FUNÇÃO 9 - FUNÇÃO PARA LISTAR OS GRUPOS QUE UM USUARIO PARTICIPA

gruposDoUsuario() {
clear
echo "Informe o nome do usuario a ser visualizado: "
read USUARIO
clear
echo "GRUPOS QUE O USUARIO $USUARIO PARTICIPA: "
echo
groups $usuario # O COMANDO GROUPS MOSTRA OS NOMES DOS GRUPOS QUE O USUARIO EM QUESTÃO ESTÁ INSERIDO.
return
}


echo "*** ATENÇÃO: PARA EXECUTAR ESTE SCRIPT É NECESSÁRIO TER PRIVILÉGIOS DE ROOT"
sleep 1

until [$OPT != 0]; do # O COMANDO UNTIL FAZ O CONTRÁRIO DO QUE INSERIDO DENTRO DOS COLCHETES
clear
principal
escolha "$OPT"
read > /dev/null # CASO O VALOR NAO SEJA NENHUM DESCRITO NO MENU, ELE ELIMINA ESTE COMANDO.
done
clear


4. Re: Ajuda com script de usuarios

luiz
luizsouza99

(usa Linux Mint)

Enviado em 16/11/2014 - 14:27h

com o seu comando eu consegui identificar o mesmo erro "fi" só que apenas na linha 78 rsrs. bom saber deste comando.


5. Re: Ajuda com script de usuarios

Jasquel Sa
jasquelp86

(usa CentOS)

Enviado em 21/11/2014 - 22:30h

Vlw Pessoal.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts