Padronização de usuários em vários micros

Publicado por Everson Caratti 24/08/2006

[ Hits: 4.800 ]

Download padroniza_usuarios.sh




Quando fiz esse script, minha necessidade era padronizar os mesmos usuáros em algumas máquinas sem a necessidade de instalar algum software de autenticação. Antes de executar, é bom dar uma boa lida no script pra não haver arrependimento depois! :)

  



Esconder código-fonte

#Antes de executar, é bom dar uma boa lida no script pra não haver arrependimento depois! :)
#Quando fiz esse script, minha necessidade era padronizar os mesmos usuáros em algumas máquinas sem a necessidade instalar algum software de autenticação.
#Para isso resolvi que seria criado um grupo "speed" com gid "1100" e todos os usuarios iriam pertencer a esse grupo.
#Para usilizar, primeiro você deve editar o script e modificar a funcao gera_lista() colocando nela seus uid,usuario,grupo um em cada linha.
#Se executar com o parametro "e" o script sera executado, caso contrario apenas simulará o que seria feito (dentro das possibilidades, claro).

#/bin/bash
gid_novo=1100
grupo_novo=speed

altera_grupo() {
gid_antigo=$(cat /etc/group | grep -i $grupo_novo | cut -d: -f 3)
if [ "$gid_antigo" = "" ] ; then
   echo "Criando grupo..."
   ## aqui ainda teria q ver se o gid 1100 nao esta em uso por outro grupo (nao desenvovido!)
   [ "$simular" = "e" ] && addgroup --group --gid $gid_novo $grupo_novo ||
                           echo "addgroup --group --gid $gid_novo $grupo_novo"
  else
   echo "alterando grupo..."
   echo "gid: $gid_antigo -> $gid_novo"
   [ "$simular" = "e" ] && groupmod -g $gid_novo $grupo_novo ||
                        echo "groupmod -g $gid_novo $grupo_novo"
   echo "alterando arquivos do grupo..."
   [ "$simular" = "e" ] && find / -gid $gid_antigo -exec chown :$gid_novo {} \; ||
                        echo "find / -gid $gid_antigo -exec chown :$gid_novo {} \;"
fi

}

altera_usuario() {
# processamento dos usuarios
[ -f /etc/samba/smbpasswd ] ||  touch /etc/samba/smbpasswd
for linha in $(cat /tmp/lista) ; do
    [ "$linha" = "" ] && continue
    uid_novo=$(echo $linha | cut -d, -f 1)
    usuario=$(echo $linha | cut -d, -f 2)
    grupo=$(echo $linha | cut -d, -f 3)
    uid_antigo=$(cat /etc/passwd | grep -i "$usuario\:" | cut -d: -f 3)

    echo "uid....: $uid_antigo -> $uid_novo"
    echo "usuario: $usuario"
    echo "grupo..: $grupo"
    if [ "$uid_antigo" = "" ] ; then
       echo "Novo usuario:"
       passe="01"
       perl -e "printf \"%s\n\", crypt ("$usuario$passe", join ('', ('.', '/', 0..9, 'A'.. 'Z', 'a'..'z')[rand (64), rand (64)]))" > /tmp/passe
       if [ -f /tmp/passe ] ; then
          passe=$(cat /tmp/passe)
          rm /tmp/passe
          [ "$simular" = "e" ] && useradd -u $uid_novo -g $gid_novo -m -s /bin/bash -p $passe $usuario ||
                               echo "useradd -u $uid_novo -g $gid_novo -m -s /bin/bash -p $passe $usuario"
       fi
      else
       [ "$simular" = "e" ] && usermod -g $gid_novo -u $uid_novo $usuario ||
                            echo "usermod -g $gid_novo -u $uid_novo $usuario"

       echo "Alterando arquivos do /home/..."
       [ "$simular" = "e" ] && find /home/ -uid $uid_antigo -exec chown $uid_novo {} \; ||
                            echo "find /home/ -uid $uid_antigo -exec chown $uid_novo {} \;"
    fi
    ## Adiciona o usuario ao samba
    ## vai adicionar uma senha pra cada usuario como sendo usuario01
    passe="01"
    echo "$usuario$passe" > /tmp/passe
    echo "$usuario$passe" >> /tmp/passe
    if [ ! "$(cat /etc/samba/smbpasswd | fgrep $usuario)" = "" ] ; then
       [ "$simular" = "e" ] && smbpasswd -x $usuario ||
                            echo "smbpasswd -x $usuario"
    fi
    [ "$simular" = "e" ] && smbpasswd -a -s $usuario < /tmp/passe ||
                         echo "smbpasswd -a -s $usuario < /tmp/passe"
    rm /tmp/passe
#    pause
done
}

pause() {
echo -n "enter" ; read enter
}

gera_lista() {
cat > /tmp/lista <<FIM
1101,andre,$grupo_novo
1102,joao,$grupo_novo
1103,balcao,$grupo_novo
1104,bankada,$grupo_novo
1105,frente,$grupo_novo
1106,note,$grupo_novo
1108,desliga,$grupo_novo
FIM
}

sintaxe() {
echo "$0 [e] => Executa, qualquer outra coisa somente simula"
echo ""
exit 1
}

[ "$1" = "" ] && sintaxe || simular="$1"
gera_lista
altera_grupo
altera_usuario
[ -f /tmp/lista ] && rm /tmp/lista
exit 0

Scripts recomendados

Screenserver no modo texto - versão 1

Juntando páginas separadas num único PDF

Atualizador de sistema multipla escolha

simplemail.sh

Script de cópia (destino - origem) otimizado


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts