#!/usr/bin/esperar que no funcione

#!/usr/bin/esperar que no funcione

Esta es probablemente una pregunta fácil, sin embargo, tengo un script de espera simple al que le agregué el bit ejecutable que parece ignorar la línea del intérprete #!/usr/bin/expect. Además, también parece que las variables no se están configurando ya que cuando las hago eco, están en blanco...

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"

spawn ssh $user@$device
echo $device
echo $user

ls -lh
-rwxr-xr-x  root  root    testexpect.exp

¡¡Gracias por tu ayuda comunidad!!

PD: Estoy ejecutando Debian Wheezy, instalé expect a través de apt-get install expect... gracias

Respuesta1

Expect se basa en el lenguaje Tcl, por lo que no deberías usar bash 'echo'; deberías usar 'puts' para imprimir algo en la pantalla:

#!/usr/bin/expect -f
set device "1.1.1.1"
set user   "testuser"
spawn ssh $user@$device
puts $device
puts $user

Y obtendrás un resultado como este:

$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser

Respuesta2

Los mensajes de error sugieren que está ejecutando el comando con un intérprete explícito, por ejemplo:

bash ./testexpect.exp

Esto ignorará el "#!" línea. Lo que sea que inicie el script debe simplemente nombrar el archivo (o decir explícitamente expect ./testexpect.exp). Si tu #! la línea era mala, habrías conseguido/usr/bin/expect: bad interpreter: ...

información relacionada