Supón que quieres cambiar la clave de un listado de usuarios que esté en /root/cuentas, este archivo /root/cuentas contendrá un usuario por cada línea.
existe una herramienta llamada chpass a la cual tu le puedes pasar con echo usuario:nuevaclave y se ocupa de cambiarle la clave así de simple.
este script hace uso del paquete ranpwd para crear una clave aleatoria:
wget http://centos5.ecualinux.com/i386/ranpwd-1.2-2.i386.rpm
rpm -Uvh ranpwd*.rpm
Entonces creo el siguiente script, le llamé cambiamasivo.sh :
#!/bin/bash
for cuenta in `cat /root/cuentas`
do
clave=`ranpwd -a`
echo $cuenta:$clave
echo $cuenta:$clave | chpasswd
done
exit 0
y listo! El script se ocupará de poner en pantalla la nueva clave para que la guardes.
Si deseas cambiar la clave a TODOS los usuarios con uid>=500 podrías hacer así (cuidado, no pregunta, simplemente cambiará!):
#!/bin/bash
for cuenta in `awk -F: '$3 > 499 {print $1}' /etc/passwd`
do
clave=`ranpwd -a`
echo $cuenta:$clave
echo $cuenta:$clave | chpasswd
done
exit 0