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

Download addUserFull




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 "

  



Esconder código-fonte

#!/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;

Scripts recomendados

baixar mp3 do site mp3tube.net

Estrutura HTML básica no nano

Extrator de CD's para MP3

Script simples para adicionar usuarios do djbdns

Validador mac-address em shell script


  

Comentários
[1] Comentário enviado por jacksonsantana em 10/06/2013 - 12:45h

bacana.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts