Get it on Google Play

Gestión de servidores: Automatización de tareas interactivas con Expect

21-06-2017
 
Expect - Automatización de tareas

Expect – Automatización de tareas

No hay nada mas engorroso que crear un script en Linux y tener que pedirle al usuario que pida un password, o que introduzca algún dato irrelevante como el nombre, o tener que darle a la ‘Y’. Os suena? Pues para poder automatizar todas esas tareas tenemos ‘Expect’, herramienta para poder automatizar todas esas tareas.

Instalación de Expect

En ubuntu podemos instalar Expect desde el gestor de paquetes:


sudo apt-get install expect

Fácil y rápido. Como a mi me gusta.

Creando scripts con Expect

Expect nos permite crear scripts, lo que queda bastante mas limpio que utilizarlo desde la línea de comandos. En el siguiente ejemplo hay un script usando ‘Expect’ que comento debajo, esto lo copiáis en un fichero y le dais permisos de ejecución ‘chmod 777 <mifichero>’:


#!/usr/bin/expect

# Ejecutamos un comando con spawn
spawn "ssh [email protected]"

# Configuramos lo que esperamos y la respuesta
expect "password:" { send "Mi password\r" }

# Interactuamos con la aplicación
interact

Cómo veis en el código, básicamente, con ‘spawn’ definimos lo que vamos a ejecutar, con ‘expect’ definimos lo que esperamos y su respuesta(Podemos poner tantos como necesitemos) y finalmente ‘interact’ para que todo funcione.

Utilización desde la línea de comandos o script bash

Podemos utilizar expect desde la línea de comandos o un script bash utilizando el parámetro -c y a continuación el script. Por ejemplo:


expect -c "spawn ssh [email protected]

        expect {
                \"password: \" { send \"Mi password\r\" }
        }
        interact   
    "

Como ya veis es el mismo ejemplo de antes, simplemente le pasamos todo el carro de instrucciones como argumento. Mas feo, pero efectivo.

En fin, espero que os sea de utilidad. A mi me resulta muy útil.

Leave a Reply

© Albert Coronado Calzada