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
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