
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: ...