jueves, 20 de diciembre de 2007

Expect interactivo

Expect es genial para algunas actividades, pero en ocasiones se requiere que sea interactivo. Ejemplo:

#!/usr/bin/expect -f
#

set force_conservative 0 ;# set to 1 to force conservative mode
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}


set timeout 100
spawn ssh -l user1 [lindex $argv 0]
match_max 1000
for {} 1 {} {
expect timeout {
send_user "Problema de comunicacion \r"
exit
} "(yes/no)?" {
send "yes\r"
} "password:" {
send "mypassword\r"
break
}
}


expect -exact "\]$ "
send -- "Modo interactivo. Teclea 'salir' para continuar\n"
interact "salir" return
expect -exact "\]$ "
send -- "exit\r"
expect eof

No hay comentarios: