Cómo instalar y usar la herramienta de Linux Expect

Cómo instalar y utilizar la herramienta Expect

Expect es una herramienta que se usa para manejar la interacción, generalmente usada en escenarios que requieren la entrada manual de datos. Expect se puede usar en scripts para lograr la automatización.

instalación

Primero verifique si espera está instalado en el sistema.

 whereis expect

La herramienta Expect depende de tcl, por lo que también es necesario instalar tcl.

Primero descargue e instale tcl, instale la versión 8.4.19 aquí.

wget https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz
tar zxvf tcl8.4.19-src.tar.gz
cd tcl8.4.19/unix && ./configure
make
make install

Luego descargue, espere e instale.

wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz
tar zxvf expect5.45.tar.gz
cd expect5.45
./configure --with-tcl=/usr/local/lib --with-tclinclude=../tcl8.4.19/generic
make
make install
ln -s /usr/local/bin/expect /usr/bin/expect

Tenga en cuenta que el comando configure aquí necesita usar la opción --with-tclinclude para pasar la ruta de la carpeta genérica en el paquete de instalación tcl.

Una vez completada la instalación, ejecute el comando de espera para comprobar si la instalación se ha realizado correctamente.

$ expect
expect1.1> 

Operación básica

Los comandos de uso común en el script Expect incluyen generar, esperar, enviar, interactuar, etc.

El
comando spawn se usa para iniciar un proceso hijo y ejecutar comandos posteriores

El
comando de espera acepta una cadena del proceso. Si la cadena aceptada no coincide con la cadena esperada, se bloqueará hasta que coincida o espere un tiempo de espera antes de continuar con la ejecución

send
envía una cadena al proceso, que es equivalente a la entrada manual, normalmente la cadena debe terminar con '\ r'.

El
comando interact transfiere el control a la consola y luego se pueden realizar operaciones manuales. Por lo general, se usa para ejecutar manualmente ciertos comandos después de iniciar sesión automáticamente mediante scripts. Si no existe tal declaración en el script, el script se cerrará automáticamente después de la ejecución.

set timeout 30
Establezca el tiempo de espera del tiempo de espera en 30 segundos, y el comando de espera continuará automáticamente la ejecución cuando el tiempo de espera de bloqueo. Cuando el tiempo de espera se configura como -1, significa que espera se bloqueará hasta que coincida con la cadena esperada antes de continuar con la ejecución. El tiempo de espera es de 10 segundos de forma predeterminada.

[lindex $ argv n]
Puede usar este comando en una secuencia de comandos para obtener el enésimo parámetro que se pasa cuando se ejecuta la secuencia de comandos. Aquí argv es el parámetro pasado, argc indica el número de parámetros pasados ​​y $ argv0 indica el nombre del script.

Además, también podemos usar el comando [lrange $ argv sn en] para obtener los parámetros sn a en.

Análisis de ejemplo

Aquí escribimos un script llamado restart_service.exp. El script primero cambia a la cuenta especificada, luego descarga el paquete de software al directorio webapps de tomcat, y luego reinicia el servicio tomcat.

#!/usr/bin/expect

set timeout -1

set user [lindex $argv 0]
set password [lindex $argv 1]
set cmd_prompt "# "

spawn su ${
    
    user}
expect ${
    
    cmd_prompt}
send "${password}\r"

expect ${
    
    cmd_prompt}
send "cd /opt/tomcat/webapps && wget http://host/path/to/package.war\r"
expect "100%"
# 直到wget下载任务打印出100%才表示软件包下载完成

expect ${
    
    cmd_prompt}
send "/opt/tomcat/bin/shutdown.sh\r"

expect ${
    
    cmd_prompt}
send "/opt/tomcat/bin/startup.sh\r"

expect eof
#interact
# 所有脚本必须以expect eof或者interact结束,一般自动化脚本以expect eof结束就行了

Ejecute el comando wait restart_service.exp tomcat tomcat123, el script usará la cuenta de tomcat para descargar el paquete de software y reiniciar el servicio de tomcat.

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/112691274
Recomendado
Clasificación