Cómo escribir esperar en Shell

Cómo escribir esperar en Shell

Esta es la continuación de mi pregunta anterior:Comando de generación no encontrado

Después de consultar algunas publicaciones antiguas, escribí esos comandos. Si está mal, ¿cómo puedo ejecutar ssh en un servidor remoto y ejecutar algunos comandos?

Respuesta1

Una posibilidad es: crear un archivo de sintaxis esperada y llamarlo mediante un script de shell:

 #!/bin/bash
 expect -f my-file.exp $1 # parameter 1 is the server name

En my-file.exp solo tendrías comandos esperados:

spawn ssh "username@[lindex $argv 0]"  # param 1 : server name
                                # expect now reads the input and does what you tell it on certain patterns

expect { 
  "password:" { send "my-password\r"; send "do_this_command\r"; send "do_that_command\r"; exp_continue; }
  "done" { send_user "exiting"; }
}

Este ejemplo inicia sesión en el servidor enviando la contraseña de texto sin cifrar, luego envía algún comando y continúa.

Si lee "hecho" en la entrada, finaliza; de lo contrario, expirará después de unos segundos.

Mientras hagas un "exp_continue", permanecerá dentro del bucle expect {}, haciendo coincidir la entrada y generando la salida adecuada.

Respuesta2

También puede utilizar un script de expectativa en su shellscript y escribir un script de expectativa.

#!/usr/bin/expect -f 
spawn ssh localhost 
expect "password: " 
send "password\r" 
expect "{[#>$]}"         #expect several prompts, like #,$ and >
send -- "command.sh\r"
expect "result of command"
etc...

información relacionada