Вероятно, это простой вопрос, однако есть простой сценарий ожидания, в который я добавил исполняемый бит, который, похоже, игнорирует строку интерпретатора #! / 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, установил ожидание через apt-get install expect ... спасибо
Expect основан на языке Tcl, поэтому вам не следует использовать bash 'echo' - вы должны использовать 'put' для вывода чего-либо на экран:
#!/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 testuser@1.1.1.1
1.1.1.1
testuser
Сообщения об ошибках предполагают, что вы запускаете команду с явным интерпретатором, например:
bash ./testexpect.exp
Это проигнорирует "#!" линия. Независимо от того, что запускает скрипт, необходимо просто назвать файл (или явно сказать expect ./testexpect.exp
). Если ваш #! линия была плохой, ты бы получил /usr/bin/expect: bad interpreter: ...