#!/usr/bin/expect не работает

#!/usr/bin/expect не работает

Это, вероятно, простой вопрос, однако есть простой сценарий expect, в который я добавил исполняемый бит, который, похоже, игнорирует строку интерпретатора #!/usr/bin/expect. Более того, также похоже, что переменные не устанавливаются, поскольку, когда я их вывожу, они пустые...

#!/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

Спасибо за вашу помощь, сообщество!!

P.S. Я использую Debian Wheezy, установил expect через apt-get install expect...спасибо

решение1

Expect основан на языке Tcl, поэтому вам не следует использовать bash 'echo' — вам следует использовать 'puts', чтобы вывести что-либо на экран:

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

И вы получите такой результат:

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

решение2

Сообщения об ошибках указывают на то, что вы запускаете команду с явным интерпретатором, например:

bash ./testexpect.exp

Это проигнорирует строку "#!". Что бы ни запускало скрипт, нужно просто назвать файл (или явно указать expect ./testexpect.exp). Если бы ваша строка #! была неправильной, вы бы получили/usr/bin/expect: bad interpreter: ...

Связанный контент