Expect: Automatizar ejecución de scripts

Vía: Ubuntu Life

ico_terminal1.png

Este tip nos puede interesar a todos los que usamos shell script para conectar a diferentes máquinas, mediante por ejemplo FTP o telnet, o hacer otro determinado tipo de tareas. Conectar a una máquina mediante telnet requiere que estés presente y tengas que introducir el usuario y la contraseña.

Si, podrías hacer algo como:


(sleep 3; echo username; sleep 3; echo password; sleep 5; echo “ls -l”; sleep 3; echo “exit”) | telnet hostname

Que aunque perfectamente valido, no es lo mas optimo. Para evitar toda esta “parafernalia” existe un interprete que podemos utilizar, se llama “expect“.

Si no lo tienes instalado en tu maquina, puedes hacerlo con:

$ sudo apt-get install expect

Basicamente el funcionamiento es muy simple. con “expect” esperamos a leer un determinado texto, y con “send” le enviamos una determinada cadena como si la hubieramos introducido por teclado. Aqui por ejemplo te dejo un shell script donde se hace un telnet a una maquina remota para listar el contenido del directorio principal:


#!/usr/bin/expect -f
spawn telnet maquina
expect "login:"
send "root\r"
expect "Password:"
send "pasa_palabra\r"
expect ">"
send "ls -l\r"
expect ">"
exit

Como ves, lo primero que hago es un telnet a la maquina remota y espero por la cadena “login:” (o la que corresponda en tu casa), le envio el usuario y me espero a por la cadena “Password:” (o la que corresponda en tu caso), le envio el password y me espero a recibir el prompt del sistema “>”, etc… solo se trata de enviar, y recibir, de meter y sacar… (vaya ya estoy desvariando otra vez ^^).

Importante, expect es sensible a mayusculas y minusculas, si pones mal la cadena que esperas recibir, se quedara como bloqueado y no continuara, asi que asegurate de poner bien los textos correspondientes segun tu caso.

¿Y me diras? Muy bonito, pero a mi esto no me sirve de nada.

Bueno, tiene muchas aplicaciones, incluso hay personas que lo usan para descargarse series de television sin necesidad de estar pendientes del nuevo capitulo, automatizan un feed que les indica cuando un capitulo esta disponible y se lo descargan de manera automatica. ¿No lo crees?. Aqui tienes un enlace.

Asi que no se, es cuestion de que le eches imaginacion, en Administracion de Sistemas si te aseguro que es un comando de lo mas potente.
Si te interesa en los siguientes enlaces encontraras mas informacion:

Telnet automatico con Script
Tutorial de expect
Expect, sitio oficial
Tranquilo pero expectante
Automatizacion de telnet
Creacion de scripts sin intervencion del usuario

No hay comentarios:

Entradas populares