В этом случае, шебанг не действует *.Вы передаете содержимое файла скрипта в ssh для выполнения построчно, как если бы каждая строка была отдельной командой, которая будет интерпретироваться оболочкой вместо expect
.
Попробуйте изменить command.sh
начто-то вроде:
# no shebang here
/bin/expect -f - <<<'spawn telnet pc_modem
expect "login:"
send "root"
expect "Password:"
send "youyou"
cliclient GetMonitoringData;'
Это отправляет скрипт expect
в виде здесь строки для ожидаемого STDIN.Если вы используете переменные в своем скрипте expect
, вам может потребоваться изменить кавычку или экранирование в зависимости от того, являются ли они переменными оболочки или TCL и где необходимо произвести подстановку.
* Шебанг используетсяЯдро, чтобы выбрать программу для интерпретации содержимого файла, когда файл помечен как исполняемый и запускается путем вызова файла по его имени.Когда файл запускается путем явного присвоения имени интерпретатору (например, sh run_me
или ssh user@host run_me_there
), шебанг не вступает в игру.