Adicionar usuarios em lote com senha padrao

Publicado por Jônatas Ramiro Goulat (última atualização em 05/07/2011)

[ Hits: 13.772 ]

Download criausuarios.sh




Este é meu primeiro script que publico. Espero que ajude alguém :)

Ele cria varias contas no linux  com senha "123456" e força a troca da mesma no primeiro login.
O arquivo com os nomes podem ser o  nome completo , que vai ficar apenas o primeiro e o ultimo separados por ponto. Ou apenas um nome. ex:

[root@localhost tmp]# cat nome_contas
jonatas ramiro goulart
fulano rosa da silva
cicrano sousa
suzan

O resultado será a crianção das seguintes contas:
jonatas.goulart
fulano.silva
cicrano.sousa
suzan

Eu testei e funcionou no Fedora 15, Red Hat 5.6 e Centos 5.1 . Mais infelizmente não funcionou no Ubuntu por que  o passwd  não possui suporte para alterar a entrada padrão. Para saber se vai funcionar é preciso dar uma olhada no man do passwd se ele tem suporte a --stdin

E como é de bom costume , segue o link que ajudou-me

http://www.unix.com/shell-programming-scripting/41773-modify-users-password-via-script.html

peguei a dica do zazzybob ,

  



Esconder código-fonte

#!/bin/bash


SENHA="123456"         #Senha padrao para todos os logins
USUARIO=`whoami`     # Verifica qual usuario que executou o script
LISTA_USUARIOS=/tmp/nome_contas # Arquivo com a lista de nomes

# Verifica se é o root.  se nao for, termina a execução
if [ $USUARIO != "root" ] ; then
   echo "O script precisa ser executado como root"
   exit
fi



for CONTA in `sed 's/ .* /./;s/ /./' $LISTA_USUARIOS`
do

    #Verifica se a conta nao existe. Se existir, não cria novamente
    if  [ -z  `cat /etc/passwd|grep "\b$CONTA\b"` ] ; then

        # cria a conta 
        useradd -m -d /home/$CONTA $CONTA

        # altera a senha
        # Nem tudas as versoes do passwd possuem suporte ao parametro --stdin 
        echo  $SENHA  | passwd --stdin $CONTA

        # força que a senha seja trocada no primeiro login
        chage -d 0 $CONTA
    fi
done

Scripts recomendados

Compartilhando a Internet com Iptables

configurar a rede wireless passando por roteador (melhorado e comentado)

Zentheme-Install - Instala e desinstala temas usando interface gráfica

Configuração de rede no Virtualbox

Sincronização entre Servidores de Impressão


  

Comentários
[1] Comentário enviado por ceejay-br em 02/11/2011 - 01:32h

Alguém sabe dizer o que faz o argumento -z no if desse script?

[2] Comentário enviado por ceejay-br em 02/11/2011 - 11:00h

Já descobri ... verifica se a string seguinte e nula!
Agora vem outra dúvida:

criei um arquivo teste.txt contendo três palavras ...

casa
faculdade
trabalho

Quando executo o comando

if [ -z 'grep qualquercoisa texte.txt' ] ; then uname; fi

A saída é nula.

Porque, se a palavra não está lá?

[3] Comentário enviado por jonatas_rg em 02/11/2011 - 11:11h

@ceejay-br é porque vc esta trocando crase (`) por aspa (') , no primeiro ele pega a saida do comando, no segundo ele entende que trata-se de uma string e não de um comando.

tambem perceba que p -z é verdadeiro só quando o grep não encontrar nem uma palavra

[4] Comentário enviado por ceejay-br em 02/11/2011 - 11:47h

Valeu o retorno jonatas_rg,

Eu consegui tratar o erro com a seguinte sintaxe:

if [ -z $(grep qualquercoisa teste.txt) ] ; then uname; fi

Acho que é exatamente a mesma coisa digitada de maneira diferente!

[5] Comentário enviado por edersongs em 13/11/2011 - 09:43h

Este é o script que eu preciso porém não entendi uma coisa muito bem.
Foi dito que o erro foi tratado com a sintaxe: if [ -z $(grep qualquercoisa teste.txt) ] ; then uname; fi
Onde entre isso? É possível colocar o script já consertado para o Ubuntu?

[6] Comentário enviado por jonatas_rg em 14/11/2011 - 10:43h

Ola Edersong, você pode tentar esse link aqui http://www.cyberciti.biz/tips/howto-write-shell-script-to-add-user.html.



Precisa ter o perl instalado. Infelizmente não tenho nem uma maquina com ubuntu no momento tra testar

[7] Comentário enviado por jonatas_rg em 14/11/2011 - 10:50h

Quanto ao erro, na verdade não acontece, apenas no amigo do comentario trocou a crase(`) por aspas ('). São parecidas, mas com efeitos totalmente diferente. o que Ele fez pra arrumar , foi trocar crase por parenteses. que possui efeito quase idêntico


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts