Criando contas de usuario em varios servidores ao mesmo tempo
Publicado por Rogério Tomassoni (última atualização em 30/06/2011)
[ Hits: 8.337 ]
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;
baixar mp3 do site mp3tube.net
Script simples para adicionar usuarios do djbdns
Validador mac-address em shell script
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
conflicting values set for option signed-by regarding source (1)
iso de sistema 32 bit em atividade (13)
Agora temos uma assistente virtual no fórum!!! (247)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (27)