Mi informacion de contacto
Correo[email protected]
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