Назад | Перейти на главную страницу

#! / usr / bin / 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, установил ожидание через 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: ...