Criando contas de usuario em varios servidores ao mesmo tempo
Publicado por Rogério Tomassoni (última atualização em 30/06/2011)
[ Hits: 8.952 ]
Homepage: www.my.opera.com/tomassoni
Quando há um ambiente que existe varios servidores e não existe a centralização das contas, e é preciso conectar em cada servidor para para criar novas contas, criei um script que faz isso.
Ele conecta em cada servidor, pede a senha do usuário root, e cria, bloqueia ou desbloqueia a conta. Lembrando que aplicativos e definições que devam ser atribuidadas a cada nova conta deve ser mantido dentro do diretório /etc/skell de cada servidor.
Vão notar no script que usei o comando chpasswd, devido ao fato que quando usamos o paramentro -p do adduser, ele assume que você já esta informando a senha criptografada, o que na verdade não acontece, informamos a senha sem criptgrafar. Logo a senha é criada sem criptografar e na sequência ela é criptografada pelo chpasswd.
Também assumi o grupo users sendo o padrão, nosso ambiente é assim, porém pode-se muda-lo ou adicionar mais uma opção para solicitar o grupo assim como fiz com nome do usuário e senha. Ex.
echo -ne "{DESCRICAO}33[40;32mInforme grupo do usuario\n{DESCRICAO}33[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "{DESCRICAO}33[40;32mInforme grupo do usuario\n{DESCRICAO}33[m"
read NOME_GRUPO
done
Troque a linha:
ssh root@$servs "adduser $NOME_USUA"fu" -p $SENHA_USU -g users && echo $NOME_USUA"fu":$SENHA_USU | chpasswd && exit "
Por:
ssh root@$servs "adduser $NOME_USUA"fu" -p $SENHA_USU -g $NOME_GRUPO && echo $NOME_USUA"fu":$SENHA_USU | chpasswd && exit "
#!/bin/bash
# Script utilizado para criar usuarios no servidor local, e nos servidores remotos.
# Lembre-se, qualquer aplicativo, arquivo que todos usuarios devam possuir coloca-lo
# dentro do diretorio /etc/skel
# Variaveis com ip dos servidores a criar o usuario
# Servidores oficiais
SERVERS="10.2.0.1 10.4.0.1 10.5.1.1 10.6.0.1 10.7.1.1 10.8.0.1 10.9.0.1 10.10.0.1 10.11.0.1 10.12.0.1 10.13.0.1 10.14.0.1 10.1.19.1 10.1.19.2 10.1.19.2 10.1.19.3 10.1.19.4 10.1.19.5"
# Use o abaixo para fazer testes
#SERVERS="10.4.0.1"
add_user(){
# Zera contador
count=0
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
done
echo -ne "{FONTE}33[40;32mInforme a senha do usuario:\n{FONTE}33[m"
read SENHA_USU
while [ -z "$SENHA_USU" ]; do
echo -ne "{FONTE}33[40;32mInforme a senha do usuario:\n{FONTE}33[m"
read SENHA_USU
done
echo -ne "{FONTE}33[40;33mVou assumir o grupo users para o usuario:$NOME_USUA{FONTE}33[m\n"
echo -ne "Adiconando $NOME_USUA em:{FONTE}33[40;32m10.1.1.1\n{FONTE}33[m"
# Cria a conta no servidor local
$(adduser $NOME_USUA -p $SENHA_USU -g users && echo $NOME_USUA:$SENHA_USU | chpasswd)
# Cria a conta no servidores remotos
for servs in $SERVERS ;do
echo -ne "Adiconando $NOME_USUA"fu" em:{FONTE}33[40;32m$servs\n{FONTE}33[m"
ssh root@$servs "adduser $NOME_USUA"fu" -p $SENHA_USU -g users && echo $NOME_USUA"fu":$SENHA_USU | chpasswd && exit "
if [ $? == 0 ]; then
count=$(expr $count + 1)
else
echo -ne "{FONTE}33[40;31mErro ao criar conta em:$servs{FONTE}33[m"
fi
done
echo -e "Contas criadas:{FONTE}33[40;32m $count{FONTE}33[m servidor[es]"
}
lock_user(){
# Zera contador
count=0
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
done
for servs in $SERVERS ;do
echo -ne "Bloqueando em: {FONTE}33[40;32m$servs\n{FONTE}33[m"
ssh root@$servs "usermod -L $NOME_USUA && exit"
if [ $? == 0 ]; then
count=$(expr $count + 1)
else
echo -ne "{FONTE}33[40;31mErro ao bloquear conta em:$servs{FONTE}33[m"
fi
done
echo -e "Contas bloqueadas em:{FONTE}33[40;32m $count{FONTE}33[m servidor[es]"
}
unlock_user(){
# Zera contador
count=0
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "{FONTE}33[40;32mInforme nome do usuario\n{FONTE}33[m"
read NOME_USUA
done
for servs in $SERVERS ;do
echo -ne "Desbloqueando em: {FONTE}33[40;32m$servs\n{FONTE}33[m"
ssh root@$servs "usermod -U $NOME_USUA && exit"
if [ $? == 0 ]; then
count=$(expr $count + 1)
else
echo -ne "{FONTE}33[40;31mErro ao desbloquear conta em:$servs{FONTE}33[m"
fi
done
echo -e "Contas desbloqueadas em:{FONTE}33[40;32m$count{FONTE}33[m servidor[es]"
}
# Funcao menu de opcoes
menu(){
clear
echo -ne " {FONTE}33[40;32mAdministrar usuarios\n{FONTE}33[m"
echo -ne " 1 - Adicionar usuario \n"
echo -ne " 2 - Bloquear usuario \n"
echo -ne " 3 - Desbloquear usuario \n"
echo -ne " 4 - Sair \n"
echo -ne " {FONTE}33[40;33mPode-se usar ctrl+c para finalizar.{FONTE}33[m"
echo -ne "\n ->"
read OPCAO_SEL
case $OPCAO_SEL in
1) add_user
;;
2) lock_user
;;
3) unlock_user
;;
4) clear; exit 0;
;;
*)
clear;
echo -ne "{FONTE}33[40;31mOpcao invalida. Escolha 1,2,3 e 4{FONTE}33[m"
sleep 2
menu
;;
esac
}
if [ "$(id -u)" != "0" ]; then
echo -e "{FONTE}33[40;32mScript deve ser executado com usuario root.{FONTE}33[m "
else
menu
fi
exit 0;
Script para formatar disquetes em modo texto (Melhorado)
xamore - um "more" simples em Xdialog
Script Para Iniciar O Modem Hsp56
Para quem esquece facil das coisas
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?









