Ejemplo de operación de comando del sistema Linux

  
                

Entre los muchos comandos en Linux, el comando expect es relativamente poco común. Podemos usar el comando expect para implementar el inicio de sesión automático del script, a la espera de comentarios del proceso, etc. Entonces, ¿cuáles son los usos del comando expect? Ven con Xiaobian.

primer vistazo a un fragmento de código:

#! /usr /bin /expect

establece tiempo de espera 30

spawn ssh -l root 192.168.1.188

espera " contraseña: "

enviar " abc123456 \\ r "

interactuar

Explique estas 6 líneas:

Línea 1 [#! /usr /bin /expect]

Esta línea le dice al código en el script del sistema operativo que use ese shell para ejecutar. La expectativa aquí es en realidad una especie de bash en Linux y cmd en Windows. Esta línea debe estar en la primera línea del script.

Línea 2 [set timeout 30]

Básicamente, saber inglés sabe que está configurando el timeout. Ahora solo debe recordar que su unidad de tiempo es: segundos

Línea 3 [spawn ssh -l username 192.168.1.188]

spawn es el comando interno que se puede ejecutar después de ingresar al entorno de espera. Si no hay una ejecución esperada o directa bajo el SHELL predeterminado, no se encuentra. Al comando engendrar. Por lo tanto, no utilice los comandos como " que generan " para encontrar el comando spawn. Por ejemplo, dir in windows es un comando interno. Este comando lo proporciona el shell. No puede encontrar un archivo ejecutable de dir.com o dir.exe. Su función principal es agregar un shell al proceso de ejecución de ssh para pasar comandos interactivos.

Línea 4 [expect " password: "]

El comando wait aquí también es un comando interno de expect, un poco mareado, espera los comandos de shell y los comandos internos son los mismos, pero No es una función, solo acostúmbrate a ella. El significado de este comando es juzgar si la cadena que contiene " contraseña: " está incluida en el último resultado de salida, y si lo está, devuélvala inmediatamente; de ​​lo contrario, esperará un momento y luego regresará, donde el tiempo de espera es de 30 segundos establecido previamente
<

Línea 5 [enviar " abc123456 \\ r "]

Esta es la ejecución de la acción interactiva, equivalente a la acción de ingresar manualmente la contraseña.

Sugerencias: No olvide agregar " \\ r " al final de la cadena de comando. Si hay un estado de espera anormal, puede verificarlo.

Línea 6 [interactuar]

Una vez completada la ejecución, mantenga el estado interactivo y otorgue el control a la consola. En este momento, puede operarlo manualmente. Si no tiene esta frase, saldrá después de iniciar sesión, en lugar de permanecer en el terminal remoto.

En Linux, puede usar este comando cuando ejecuta ssh login o scp para copiar archivos, y puede ingresar la contraseña automáticamente.

Caso 1: Comando de ejecución remota

#! /usr /bin /expect -f

establece tiempo de espera 30

spawn ssh -l root 192.168.1.188

expect {

" yes /no &" {send " yes \\ r "; exp_continue}

" contraseña: " {send " abc123456 \\ r "}

}

expect -re " \\] (\\ $

Copyright © Conocimiento de Windows All Rights Reserved