
Это, вероятно, простой вопрос, однако есть простой сценарий 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: ...