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
#!/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
[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
[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?
[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