[LUG.ro] Script con expect y esas yerbas..

Federico Wiecko lugro@lugro.org.ar
08 Nov 2003 07:30:18 -0300


Es esto lo que queres ??  (a lo mejor no te entiendo)

for i in `cat mis_servers`
do
     cambia_contraseña $i
done


Otra forma de hacerlo y para no complicarte la vida con el expect es
usar claves rsa mediante ssh, que por supuesto hay que configurar muy
bien (si te interesa leete el ssh-keygen). 

El jue, 06-11-2003 a las 14:32, Alberto Ferrer escribió:
> Hola, automatizando las cosas en mi trabajo pense em cambiar los root de 20 servers, y me aburri de cambiarlos 1x1, quiero cambiarlos todo de un saque me dije, para eso esta expect, y me hice un script el cual me deja ejecutar un comando solo con colocarla clave de root en el mismo archivo, onda ./ssh-cmd lapc.com uname -a , y me devuelve el resultado, sin tener qu hacer login ni nada ;), como puedo hacer para ejecutar en los 20 de la misma forma el passwd y cambiarle la clave a los 20 juntos.
> 
> Adjunto mi script.
> 
> 
> 
> ----------------------------------------------
> 
> #!/usr/bin/expect --
> set pwd  "MiclavedeRoot"
> set host [lindex $argv 0]
> set cmd  [lrange $argv 1 99]
> spawn ssh  -o "StrictHostKeyChecking no" root@$host echo sshcmdstart\;$cmd\;echo sshcmddone
> set timeout 90
> expect {
> 	"*assword:" {
> 		sleep 1;
>         	send "$pwd\r"
> 	}
> 	"*REMOTE HOST IDENTIFICATION*" {
> 		puts "\n\nsshhostproblem\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
> 	}
>         "*Name or service not known*" {
>                 puts "\n\nsshhostnotfound\n"   
>                 puts "\n\nsshcmddone\n"
>                 exit
>         }
>         "*Connection timed out*" {
>                 puts "\n\nsshconnecttimeout\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
>         }
> 	"*Connection closed*" {
> 		puts "\n\nsshdisconnectproblem\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
> 	}
> 	"*Permission denied, please try again*" {
> 		puts "\n\nsshdisconnectproblem\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
> 	}
> 	"*Connection refused*" {
> 		puts "\n\nsshdisconnectproblem\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
>          }
> 
> }
> set timeout 12000
> expect {
>         "\nsshcmddone" {
>                 sleep 1
>                 exit
>         }
>         "Permission denied, please try again*" {
>                 puts "\n\nsshcmdpermissiondeny\n"
>                 puts "\n\nsshcmddone\n"
>                 exit
>         }
> }
> 
> ----------------------------------------------
> --------------------------
>      Alberto Ferrer 
>  albertof@barrahome.org
> http://www.barrahome.org
> JID:albertof@barrahome.org
> --------------------------
> 
>