Compartir tecnología

Shell Espera interacción automatizada (ejemplo)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Shell espera interacción automatizada

Durante la operación y el mantenimiento diario de Linux, a menudo es necesario iniciar sesión en el servidor de forma remota. Durante el proceso de inicio de sesión, se requiere un proceso interactivo y es posible que deba ingresar sí/no y otra información, por lo que se utiliza expect para lograr la interacción. .

Sintaxis clave

❶[#!/usr/bin/expect]

Esta línea le dice al sistema operativo qué shell usar para ejecutar el código en el script. Lo que se espera aquí es en realidad lo mismo que bash en Linux y cmd en Windows. NOTA: Esta línea debe ser la primera línea del script.

❷conjunto

El tiempo de espera predeterminado es de 10 segundos. El tiempo de espera de la sesión se puede configurar mediante el comando set. Si el tiempo de espera no está limitado, debe establecerse en -1.

Por ejemplo: establecer tiempo de espera 300 // Indica que el tiempo de espera de la sesión es 300 segundos

Por ejemplo: establecer tiempo de espera -1/configuración/nunca tiempo de espera, configuraciones comunes

Nota: ¿Por qué es necesario establecer un tiempo de espera? Debido a que el tiempo predeterminado es 10 segundos, es probable que se desconecte durante la ejecución interactiva, lo que provocará que la ejecución de la tarea finalice antes de completarse. Una tarea programada de nuestra empresa que sincronizaba archivos desde un ftp remoto siempre terminaba. Más tarde, configuré el tiempo de espera en -1 y estuvo bien.

❸engendro

spawn suele ir seguido de un comando de ejecución de Linux, lo que significa abrir una sesión, iniciar el proceso y rastrear la información de interacción posterior.

❹Esperar

expect solo captura los resultados de la ejecución de los comandos ejecutados por spawn, que incluyen principalmente información de solicitud de entrada estándar, eof y tiempo de espera. Espere a que aparezca el símbolo del sistema, que es el mensaje para capturar la entrada del usuario:

➎enviar

El envío de valores que requieren interacción reemplaza la entrada manual del usuario; este comando no puede ingresar ni avanzar línea automáticamente y generalmente requiere agregar r (retorno de carro) o n;

espere "contraseña"{ enviar "abc123r"} //La parte de envío de la misma línea debe tener {}

❻Terminator espera eof/interactuar

esperar eof

Esto debe agregarse correspondiente a spawn, lo que significa que la información de salida del terminal de captura finaliza, similar a if....endif.

interactuar

Una vez completada la ejecución, mantenga el estado interactivo y transfiera el control a la consola. En este momento, se puede realizar la operación manual. Si no existe tal oración, se cerrará después de completar el inicio de sesión, en lugar de permanecer en el terminal remoto.

PD: el script expect debe terminar con interact o expect eof. Expect eof suele ser suficiente para realizar tareas automatizadas.

Ejemplo

Inserte el comando expect en el script de shell, el formato es el siguiente

Ejemplo 1: script de creación de carpeta 22.sh

#!/bin/sh

esperar

Generar ssh 10.1.1.196

esperar contraseña {enviar xxxn}

enviar cd /home/cg/hmf_app/testr

enviar mkdir newworkr

enviar salida

esperar eof

fin de año

Ejemplo 2: crear un script de shell de carpeta

esperar

Generar ssh 10.1.1.196

esperar contraseña {enviar xxxn}

enviar cd /home/cg/hmf_app/testr

enviar mkdir newworkr

enviar salida

esperar eof

fin de año

Ejemplo 3: copiar archivos

esperar

Establecer tiempo de espera -1

generar scp [email protected]:/datos/paquete/casb/$casbzip ./

esperar contraseña {enviar xxxn}

esperar eof

fin de año

Observación:

fin de año

...

fin de año

Representa un script de shell

Referirse a:Shell Espera interacción automatizada_script de shell contenido de entrada automática interactiva-CSDN Blog