lunes, agosto 23, 2010

Scripting Interactivo

Seguro que alguna vez habeis tenido que programar algún script que precisaba de interacción humana porque pedía usuario y password y no había forma de pasarle estos parámetros al invocar el programa.

Para esta problemática se inventó expect, gracias a expect podremos esperar respuesta por parte del comando ejecutado y responder en consecuencia.

Lo mejor de todo es que podemos empotrar código expect dentro de nuestros scripts en bash.

Voy a poner un ejemplo en el que se realiza una conexión por telnet y reinicia el router:

#!/bin/bash

/usr/bin/expect -- << EOF
spawn telnet 192.168.1.1
expect "Trying 192.168.1.1..."
expect "Connected to 192.168.1.1."
expect "Escape character is '^]'."
expect "BCM96348 ADSL Router"
expect "Login:"
send "1234\r"
expect "Password:"
send "1234\r"
expect ">"
send "reboot"
send "\r"
expect "The system shell is being reset. Please wait..."
EOF

Así de fácil ;)

No hay comentarios: