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 ,
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












