expect
Cambio masivo de contraseñas con expect
by Neoyagami on Mar.25, 2010, under expect, linux, scripting
En el mundo del encargado de servidores linux, a más de uno le ocurrio que debio cambiar la contraseña de acceso de mas de un servidor (pongamos unos 100 o 300) a mi en lo personal no, pero a un amigo si (mi amigo Sendoh) bueno, el tema es que le dije “mira creo que con expect puedo hacer algo para ti” y en un rato logre hacer esto
#!/usr/bin/expect -f
set ip [lindex $argv 0]
spawn ssh root@$ip
expect "connecting"
send "yes\r"
expect "password:"
send "password_antigua\r"
expect "\@"
send "ls\r"
send "echo \"password_nueva\" | passwd root --stdin\r"
expect "all authentication tokens updated successfully"
expect eof
Lo crean con un nombre, ej. CambiaPassword.expect y le dan permisos de ejecución (chmod u+x CambiaPassword.expect)
este script necesita que borren el archivo ~/.ssh/known_hosts o lo vacíen ya que contestara “yes” cuando ssh pregunte “Are you sure you want to continue connecting (yes/no)?” y eso solo pasa si nunca se han conectado por ssh o si en su archivo ~/.ssh/known_hosts no esta o no hay nada.
Para finalizar si son buenos muchachos y dejan un archivo de texto con la lista de ips de servidores solo les falta hacer un
cat archivoconips.txt | xargs CambiaPassword.expect
Recuerden cambiar password_antigua y password_nueva para que se ajuste a sus necesidades.