Usar el comando expect en Linux para automatizar scripts de terminal
El comando expect en Linux y autoexpect pueden ser extremadamente útiles para probar un software.
Imagine que construyó un programa en Shellscript, C, Python, Perl o cualquier otro lenguaje que se ejecuta en el shell e interactúa con el usuario, preguntando parámetros, y con base en los parámetros proporcionando respuestas.
Pues bien, probar este tipo de programa puede ser tedioso, ya que tendrá que escribir varias veces algunos parámetros, hasta que su programa esté funcionando como se espera.
El comando expect y autoexpect pueden ser útiles para hacer ese trabajo.
Para ilustrar, vea el pequeño script que pregunta el nombre del usuario, a continuación el mes del año:
$ cat script#!/bin/bashecho "Qual seu Nome?"read NOMEecho "Qual mês do ano você quer ver o calendário?"read MESecho "$NOME, aqui vai o calendário:"cal $MES 2020
Para ejecutar el script, es necesario hacerlo ejecutable:
$ chmod +x script
Al ejecutarlo:
$ ./script Qual seu Nome?UiráQual mês do ano você quer ver o calendário?01Uirá, aqui vai o calendário: Janeiro 2020 do se te qu qu se sá 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Imagine que está refinando su código, y tenga que probar el programa varias y varias veces. Tedioso hacer esto manualmente.
Para crear un "autoprueba" de la ejecución de este script, sin necesidad de tener que escribir el nombre y el mes en cada ejecución, se puede usar el comando autoexpect:
$ autoexpect ./scriptautoexpect started, file is script.expQual seu Nome?UiráQual mês do ano você quer ver o calendário?02Uirá, aqui vai o calendário: Fevereiro 2020 do se te qu qu se sá 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 autoexpect done, file is script.exp
El programa autoexpect crea un archivo con el nombre del script, seguido de la extensión .exp.
Este archivo generado es un shellscript que usa los comandos expect para leer las salidas de su programa, y send enviar las contrarespuestas.
Ahora, para probar el pequeño programa, basta con ejecutar el script script.exp:
$ ./script.exp spawn ./scriptQual seu Nome?UiráQual mês do ano você quer ver o calendário?02Uirá, aqui vai o calendário: Fevereiro 2020 do se te qu qu se sá 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
De esta forma, ya no necesitará escribir nada. Solo perfeccionar y probar su software.
Aprenda mucho más sobre Linux en nuestro curso en línea. Puede realizar la inscripción aquí. Si ya tiene una cuenta, o quiere crear una, simplemente inicie sesión o cree su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.