scripts script programacion pasar parametros operaciones español ejemplos ejecutar comandos comando aritmeticas linux bash shell expect

linux - programacion - scripts bash ejemplos



Cómo pasar el argumento en espera a través de la línea de comandos en el script de shell (5)

Estoy pasando argumento en expect través de la línea de comandos en el script de shell

Intenté esto

#!/usr/bin/expect -f set arg1 [lindex $argv 0] spawn lockdis -p expect "password:" {send "$arg1/r"} expect "password:" {send "$arg1/r"} expect "$ "

pero no está funcionando. Por favor, ayúdame a resolverlo.

Gracias


Args con espacios están bien, suponiendo que el argumento que desea es el primero después del nombre del script ( $0 es el nombre del script, $1 es el primer arg, etc.)

Asegúrese de utilizar "$ARG" NOT $ARG ya que NO incluirá el espacio en blanco, sino que los dividirá en args individuales. Haz esto en tu script bash :

#!/bin/bash ARG="$1" echo WORD FROM BASH IS: "$ARG" #test for debugging expect -d exp.expect "$ARG" exit 0

Además, como dice la primera respuesta, use el modo de depuración (el indicador -d ). argv sus variables de argv como expect verlas, y le mostrará lo que está sucediendo.


Si quieres leer de los argumentos, puedes lograr esto simplemente por

set username [lindex $argv 0]; set password [lindex $argv 1];

E imprímelo

send_user "$username $password"

Ese script se imprimirá

$ ./test.exp user1 pass1 user1 pass1

Puedes usar el modo Debug

$ ./test.exp -d user1 pass1


Una mejor manera podría ser esta:

lassign $argv arg1 arg2 arg3

Sin embargo, tu método debería funcionar también. Compruebe que se recupera arg1 . Por ejemplo, con send_user "arg1: $arg1/n" .


tenga en cuenta que a veces argv 0 es el nombre del script que está llamando. entonces si lo ejecuta de esa manera, argv 0 no funciona,
para mí, ejecuto "> esperar contraseña de script.exp"

eso hace que argv 1 = contraseña argv 0 = script.exp


#!/usr/bin/expect set username [lindex $argv 0] set password [lindex $argv 1] log_file -a "/tmp/expect.log" set timeout 600 spawn /anyscript.sh expect "username: " { send "$username/r" } expect "password: " { send "$password/r" } interact