
Esta é provavelmente uma pergunta fácil, no entanto, tenho um script expect simples ao qual adicionei o bit executável que parece estar ignorando a linha do interpretador #!/usr/bin/expect. Além disso, também parece que as variáveis não estão sendo definidas, pois quando eu as faço eco, elas ficam em branco...
#!/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
Obrigado pela sua comunidade de ajuda!!
PS: Estou executando o Debian Wheezy, instalado expect via apt-get install expect... obrigado
Responder1
Expect é baseado na linguagem Tcl, então você não deve usar bash 'echo' - você deve usar 'puts' para imprimir algo na tela:
#!/usr/bin/expect -f
set device "1.1.1.1"
set user "testuser"
spawn ssh $user@$device
puts $device
puts $user
E você obterá resultados como este:
$ ./test.exp
spawn ssh [email protected]
1.1.1.1
testuser
Responder2
As mensagens de erro sugerem que você está executando o comando com um interpretador explícito, por exemplo:
bash ./testexpect.exp
Isso irá ignorar o "#!" linha. O que quer que esteja iniciando o script precisa apenas nomear o arquivo (ou dizer explicitamente expect ./testexpect.exp
). Se seu #! a linha era ruim, você teria conseguido/usr/bin/expect: bad interpreter: ...