Automatizar aplicaciones interactivas
Autor: gacuj | Archivado en: General, Linux el día 17/Ago/2005
Hace poco he descubierto expect. Expect es una herramienta para automatizar aplicaciones interactivas como telnet, ftp, passwd, fsck, rlogin, tip, etc.
Tuve la necesidad de comprobar el funcionamiento de un servicio en Linux. Para ello atacaba los puertos que utilizaba este servicio mediante telnet y le enviaba una cadena. Prueba realizada manualmente y todo OK. Pero cuando quiero introducir en el cron esta tarea mediante un script, telnet no se comporta como nos gustaría. No llegaba a admitir la cadena, cortaba la conexión tras realizar el telnet.
¿Qué hacer? Supongo que habrá varias soluciones pero descubrí expect y ciertamente es muy potente y útil.
Éste es el código que emplee para conectar a un puerto y enviar la cadena “HELLO” al servidor:
#!/usr/bin/expect -f
proc conecta {puerto1} {
spawn telnet
expect “*telnet*”
send “open 10.10.10.11 $puerto1n”
expect {”‘^]’n” exp_continue}
send “HELLO\n”
}
set puerto [lindex $argv 0]
conecta $puerto
Todo esto se introduce en un fichero con extensión exp, supongamos telnet.exp y se asignan permisos de ejecución.
Para ejecutarlo: ./telnet.exp puerto, donde puerto es el valor que le pasamos como parámetro.
Lo importante es saber que se puede automatizar todo. El software de expect incluye numerosos ejemplos que nos ayudan a entender su funcionamiento. De primeras echa un poco para atrás pero en seguida se descubre que no es para tanto y que tiene mucha utilidad.
Más info:
man expect












estimado master, quisiera me puedas ayudar, necesito hacer un script en unix/solaris que realice un telnet en donde yo le de la ip,user y pasoword y despues estando dentro de la cuenta dada, ejecute los comando que yo quiera, como por ejemplo ls -las, ah los comandos a ejecutar estarian dentro del cuerpo del script que diseñe