como fazer este scripC em shell

1. como fazer este scripC em shell

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/05/2018 - 20:22h

Boa noite senhores e senhoras, preciso muito criar este script e como iniciante em Linux, estou com bastante dificuldades, qualquer ajuda será muito bem vinda..
muito obrigado pela atenção de todos!
Preciso desenvolver uma estrutura de shell scripts para criação e administração de usuários
conforme as necessidades abaixo:

- Adicionar um usuário;
- Alterar a senha de um usuário;
- Adicionar Grupo;
- Adicionar usuário ao Grupo;
- Remover usuário;
- Remover grupo;
- Executar um "dump" da relação de usuários;
- Deve haver validação das funções;
- Deve haver um LOG de execução (Data e Hora na saida);



  


2. Re: como fazer este scripC em shell

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/05/2018 - 18:51h

removido escreveu:

Boa noite senhores e senhoras, preciso muito criar este script e como iniciante em Linux, estou com bastante dificuldades, qualquer ajuda será muito bem vinda..
muito obrigado pela atenção de todos!
Preciso desenvolver uma estrutura de shell scripts para criação e administração de usuários
conforme as necessidades abaixo:

- Adicionar um usuário;
- Alterar a senha de um usuário;
- Adicionar Grupo;
- Adicionar usuário ao Grupo;
- Remover usuário;
- Remover grupo;
- Executar um "dump" da relação de usuários;
- Deve haver validação das funções;
- Deve haver um LOG de execução (Data e Hora na saida);


Segue um exemplo:

#!/bin/bash
CV="\x1B[0;38;5;196m"
CVD="\x1B[0;38;5;2m"
FC="\x1B[m"

CHECA_ROOT() { [ $UID != 0 ] && { echo -e "\n${CV} LOGUE COM o \"root\"${FC}\n" ; exit ; } || CHECA_COMANDO ; }

CHECA_COMANDO() {
[ $(which makepasswd) ] && ADDUSER || { echo -e "${CV} Instale o \"makepasswd\" ${FC}" ; exit ; }
}

ADDUSER() {
read -p " INFORME O USUáRIO: " LOGIN
BUSCA_USER ERROLOGIN
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')
read -p " INFORME O NOME ou COMENTáRIO: " NOME
groupadd "$LOGIN"
read -a PASSWD <<< $(makepasswd --crypt-md5 --chars=8 --string="$STRING") #GERA SENHA CRIPTOGRAFADA (08 CARACTERES)
useradd -c "$NOME" -p "${PASSWD[1]}" -d /home/"$LOGIN" -m -g "$LOGIN" -s /bin/bash "$LOGIN"
BUSCA_USER MSGOK ERROCAD
}

BUSCA_USER() {
[ $(awk -F":" '/'$LOGIN'/ {print $1}' /etc/passwd) ] && $1 || $2
}

ERROLOGIN() { echo -e "\n${CV} O USUáRIO:$LOGIN\n JÁ EXISTE NO SISTEMA\n SAINDO . . . ${FC}\n" ; exit ; }

MSGOK() { echo -e "\n${CVD} CADASTRO EFETUADO COM SUCESSO.\n\n USUARIO:$LOGIN\n NOME:$NOME\n SENHA:${PASSWD[0]}${FC}\n" ; }

ERROCAD() { echo -e "\n${CV} PROBLEMAS NO CADASTRO DO USUáRIO:$LOGIN ${FC}" ; }

CHECA_ROOT


1 Verifica se está logado com root
2 verifica se o comando makepasswd está instalado
3 Solicita o LOGIN, se já é cadastrado, exibe mensagem e sai...
Senão, solicita o nome, cria o grupo, gera a senha e cadastra.
Exibe mensagem de sucesso/erro no cadastro...

É isso...
marcelo oliver


3. Re: como fazer este scripC em shell

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 24/05/2018 - 13:32h

Alterei o script do Marcelo, incluindo um menu, depois criei todas as rotinas que ainda não estavam criadas.
#!/bin/bash

CV="\x1B[0;38;5;196m"
CVD="\x1B[0;38;5;2m"
FC="\x1B[m"

MENU_PRINCIPAL() {
while :; do
clear
echo -e " MENU PRINCIPAL\n-------------------------------\n1.Adicionar um usuário\n2.Alterar a senha de um usuário\n3.Adicionar Grupo\n4.Adicionar usuário ao Grupo\n5.Remover usuário\n6.Remover grupo\n7.Dump da relação de usuários\n0.Sair\n"

read -p "Opção: " OPCAO
#echo $OPCAO

if [ $OPCAO == 0 ]; then
exit
elif [ $OPCAO == 1 ]; then
ADICIONAR_USUARIO
elif [ $OPCAO == 2 ]; then
ALTERAR_SENHA
elif [ $OPCAO == 3 ]; then
ADICIONAR_GRUPO
elif [ $OPCAO == 4 ]; then
ADICIONAR_USUARIO_AO_GRUPO
elif [ $OPCAO == 5 ]; then
REMOVER_USUARIO
elif [ $OPCAO == 6 ]; then
REMOVER_GRUPO
elif [ $OPCAO == 7 ]; then
DUMP_USUARIOS
else
echo -e "\nOpção inválida\n"
read -p "TECLE ALGO PARA CONTINUAR..." NADA
fi
done
}

ADICIONAR_USUARIO() {
clear
echo -e "# ADICIONAR USUÁRIO #\n------------------------------"

read -p "Login do usuário...: " LOGIN
BUSCA_USER ERROLOGIN
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')

read -p "Nome do usuário....: " NOME
groupadd "$LOGIN"

read -a PASSWD <<< $(makepasswd --crypt-md5 --chars=8 --string="$STRING") #GERA SENHA CRIPTOGRAFADA (08 CARACTERES)
useradd -c "$NOME" -p "${PASSWD[1]}" -d /home/"$LOGIN" -m -g "$LOGIN" -s /bin/bash "$LOGIN"

BUSCA_USER MSGOK ERROCAD

TECLE_ALGO
}

ALTERAR_SENHA() {
clear
echo -e "# ALTERAR SENHA #\n------------------------------"

read -p "Login do usuário....: " LOGIN
BUSCA_USER echo ERROLOGINNAO
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')

read -p "Nova senha..........: " SENHA
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')

echo -e "new"'!'"$SENHA\nnew"'!'"$SENHA" | passwd "$LOGIN" 2> /dev/null

echo -e "\n${CVD}SENHA ALTERADA COM SUCESSO!\n\nUsuário..: $LOGIN\nSenha....: $SENHA ${FC}\n" ;

TECLE_ALGO

}

ADICIONAR_GRUPO() {
clear
echo -e "# ADICIONAR GRUPO #\n------------------------------"

read -p "Novo Grupo...: " GRUPO
BUSCA_GRUPO ERROGRUPO
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')

groupadd "$GRUPO"
BUSCA_GRUPO MSGOKGRUPO ERROCADGRUPO

TECLE_ALGO
}

ADICIONAR_USUARIO_AO_GRUPO() {
clear
echo -e "# ADICIONAR USUÁRIO AO GRUPO #\n------------------------------"

read -p "Login do usuário...........: " LOGIN
BUSCA_USER echo ERROLOGINNAO
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')

read -p "Grupo que será adicionado..: " GRUPO
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')
BUSCA_GRUPO MSGOKADDUSERGRUPO ERROGRUPONAO

TECLE_ALGO
}

REMOVER_USUARIO() {
clear
echo -e "# REMOVER USUÁRIO #\n------------------------------"

read -p "Login do usuário...........: " LOGIN
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')
BUSCA_USER MSGOKREMOVEUSER ERROLOGINNAO

TECLE_ALGO
}

REMOVER_GRUPO() {
clear
echo -e "# REMOVER GRUPO #\n------------------------------"

read -p "Grupo que irá remover...: " GRUPO
STRING=$({ echo {A..Z};echo {0..9};echo {a..z};echo {0..9}; }|sed 's/ //g'|paste -sd '')
BUSCA_GRUPO MSGOKAPAGOUGRUPO ERROGRUPONAO

TECLE_ALGO
}

DUMP_USUARIOS() {
clear
echo -e "# DUMP DOS USUÁRIOS #\n------------------------------"

getent passwd | awk -F ':' {'print $1'} | more -15

echo ''
TECLE_ALGO
}

CHECA_ROOT() { [ $UID != 0 ] && { echo -e "\n${CV}Logue com o usuário \"root\"${FC}\n" ; exit ; } || CHECA_COMANDO ; }

CHECA_COMANDO() {
[ $(which makepasswd) ] && MENU_PRINCIPAL || { echo -e "${CV}Instale o \"makepasswd\" ${FC}" ; exit ; }
}

BUSCA_USER() {
[ $(awk -F":" '/^'$LOGIN'/ {print $1}' /etc/passwd) ] && $1 || $2
}

BUSCA_GRUPO() {
[ $(awk -F":" '/^'$GRUPO'/ {print $1}' /etc/group) ] && $1 || $2
}

ERROLOGIN() {
echo -e "\n${CV}O usuário '$LOGIN' já existe no sistema. ${FC} \n"
TECLE_ALGO
}

ERROLOGINNAO() {
echo -e "\n${CV}O usuário '$LOGIN' não existe no sistema. ${FC} \n"
TECLE_ALGO
}

ERROGRUPO() {
echo -e "\n${CV}O grupo '$GRUPO' já existe no sistema. ${FC} \n"
TECLE_ALGO
}

ERROGRUPONAO() {
echo -e "\n${CV}O grupo '$GRUPO' não existe no sistema. ${FC} \n"
TECLE_ALGO
}

MSGOK() {
echo -e "\n${CVD}CADASTRO EFETUADO COM SUCESSO!\n\nUsuário..: $LOGIN\nNome.....: $NOME\nSenha....: ${PASSWD[0]}${FC}\n" ;
}

MSGOKREMOVEUSER() {
userdel -f "$LOGIN"
rm -r /home/"$LOGIN"/
echo -e "\n${CVD}USUÁRIO REMOVIDO COM SUCESSO!\n\nUsuário..: $LOGIN ${FC}\n" ;
}

MSGOKGRUPO() {
echo -e "\n${CVD}CADASTRO EFETUADO COM SUCESSO!\n\nGrupo....: $GRUPO ${FC}\n" ;
}

MSGOKAPAGOUGRUPO() {
groupdel "$GRUPO"
echo -e "\n${CVD}GRUPO REMOVIDO COM SUCESSO!\n\nGrupo....: $GRUPO ${FC}\n" ;
}

MSGOKADDUSERGRUPO() {
usermod -a -G "$GRUPO" "$LOGIN"
echo -e "\n${CVD}GRUPO ADICIONADO AO USUARIO COM SUCESSO!\n\nGrupo....: $GRUPO \nUsuário..: $LOGIN ${FC}\n" ;
}

ERROCAD() {
echo -e "\n${CV}PROBLEMAS NO CADASTRO DO USUÁRIO: $LOGIN ${FC}" ;
}

ERROCADGRUPO() {
echo -e "\n${CV}PROBLEMAS NO CADASTRO DO GRUPO: $GRUPO ${FC}" ;
}

TECLE_ALGO() {
read -p "TECLE ALGO PARA CONTINUAR..." NADA
MENU_PRINCIPAL
}

CHECA_ROOT

Abraço,
Diego Mendes Rodrigues






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts