Criando contas de usuario em varios servidores ao mesmo tempo
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 "\033[40;32mInforme grupo do usuario\n\033[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "\033[40;32mInforme grupo do usuario\n\033[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 "
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 "\033[40;32mInforme grupo do usuario\n\033[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "\033[40;32mInforme grupo do usuario\n\033[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 "
Descrição
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 "\033[40;32mInforme grupo do usuario\n\033[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "\033[40;32mInforme grupo do usuario\n\033[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 "
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 "\033[40;32mInforme grupo do usuario\n\033[m"
read NOME_GRUPO
while [ -z "$NOME_GRUPO" ]; do
echo -ne "\033[40;32mInforme grupo do usuario\n\033[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 "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
done
echo -ne "\033[40;32mInforme a senha do usuario:\n\033[m"
read SENHA_USU
while [ -z "$SENHA_USU" ]; do
echo -ne "\033[40;32mInforme a senha do usuario:\n\033[m"
read SENHA_USU
done
echo -ne "\033[40;33mVou assumir o grupo users para o usuario:$NOME_USUA\033[m\n"
echo -ne "Adiconando $NOME_USUA em:\033[40;32m10.1.1.1\n\033[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:\033[40;32m$servs\n\033[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 "\033[40;31mErro ao criar conta em:$servs\033[m"
fi
done
echo -e "Contas criadas:\033[40;32m $count\033[m servidor[es]"
}
lock_user(){
# Zera contador
count=0
echo -ne "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
done
for servs in $SERVERS ;do
echo -ne "Bloqueando em: \033[40;32m$servs\n\033[m"
ssh root@$servs "usermod -L $NOME_USUA && exit"
if [ $? == 0 ]; then
count=$(expr $count + 1)
else
echo -ne "\033[40;31mErro ao bloquear conta em:$servs\033[m"
fi
done
echo -e "Contas bloqueadas em:\033[40;32m $count\033[m servidor[es]"
}
unlock_user(){
# Zera contador
count=0
echo -ne "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
while [ -z "$NOME_USUA" ]; do
echo -ne "\033[40;32mInforme nome do usuario\n\033[m"
read NOME_USUA
done
for servs in $SERVERS ;do
echo -ne "Desbloqueando em: \033[40;32m$servs\n\033[m"
ssh root@$servs "usermod -U $NOME_USUA && exit"
if [ $? == 0 ]; then
count=$(expr $count + 1)
else
echo -ne "\033[40;31mErro ao desbloquear conta em:$servs\033[m"
fi
done
echo -e "Contas desbloqueadas em:\033[40;32m$count\033[m servidor[es]"
}
# Funcao menu de opcoes
menu(){
clear
echo -ne " \033[40;32mAdministrar usuarios\n\033[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 " \033[40;33mPode-se usar ctrl+c para finalizar.\033[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 "\033[40;31mOpcao invalida. Escolha 1,2,3 e 4\033[m"
sleep 2
menu
;;
esac
}
if [ "$(id -u)" != "0" ]; then
echo -e "\033[40;32mScript deve ser executado com usuario root.\033[m "
else
menu
fi
exit 0;