Cómo utilizar expect para escribir secuencias de comandos de inicio de sesión automático
1. ¿Instalar lo esperado?
Primero debes instalar tcl: apt-get install tcl
apt-get install expect
2.use ofpect
2.1 Entrada Operación simple de contraseña
#! /usr/bin/expect
establecer tiempo de espera 100
establecer contraseña "123456"
spawn sudo rm -rf zzlogic
esperar " root123456"
enviar "$ contraseña\n"
interactuar
Instrucciones:
Primera línea #! /usr/bin/expect representa el modo interactivo del shell usando inspect
set es el valor asignado a la variable contraseña
set timeout 100: establece el tiempo de espera en 100 segundos, si lo deseas para ejecutar Si el comando de shell es más largo, el tiempo de espera se puede establecer más largo. inspeccionar excede el tiempo de espera El tiempo de espera es de 10 segundos
spawn ejecuta el script de shell bajo expect
esperar determina si el retorno del script de shell ejecutado por spawn contiene el "" en el campo p>
enviar: si inspeccionar monitorea la cadena contenida, se ingresará el contenido en envío, \n es equivalente al retorno de carro
interactuar: salga de inspeccionar y regrese a la terminal. de lo contrario, siempre estará en inspeccionar. No se puede salir al terminal
2.2 parámetros de línea de comando de inspeccionar
[lindex $argv n] Obtiene el índice de n parámetros (el índice) comienza a contar desde 0)
$argc es el número de parámetros de la línea de comando
[lrange $argv 0 0] representa el primer parámetro
[lrange $argv 0 3] representa del primero al tercer parámetro
Por ejemplo, el archivo scp_service.sh puede ser. /scp_service.sh -rm para ejecutar, este es el parámetro especificado
establecer opción?[lindex $argv 0] (obtiene el primer parámetro almacenado en la opción variable, el índice del parámetro comienza desde 0 calculado )
2.3if....elif... .else...
esperar admite declaraciones if,
if {condición 1} { p>
condición 2} {
condición 3{
Condición 1 ejecutar sentencia
} elif {condición 2} {
Condición 2 ejecutar sentencia
} else {
De lo contrario ejecutar sentencia
}
Descripción:
< La condición de p>1.if usa {} para contener la condición2. if y el siguiente {} deben estar separados por espacios
3.
Las dos llaves deben estar separadas por espacios, como si {}{}; de lo contrario, se informará un error: hay caracteres adicionales después de cerrar la llave
3. Utilice { para conectarse a la siguiente línea. , por lo que la condición de if Debe haber una llave de apertura después de {
4.else no se puede colocar en una línea separada, por lo que else debe ir seguida de}
2.4 expect {} , expectativas de varias líneas, la línea que coincida con Qué línea ejecutar
Antecedentes: a veces, el resultado esperado de la ejecución del shell es variable, puede ser que solicite sí/no, o puede ser que se ingrese una contraseña. entonces puedes usar expect {}
Las llaves se usan para colocar declaraciones de varias líneas, que coinciden de arriba a abajo. Se ejecuta la oración que coincida.
3. Llame a inspect en el shell para iniciar sesión
Ejecuté el script de inspección en el script de shell. Por supuesto, puede pasar algunas variables definidas en el shell como entrada de parámetros al script de inspección.