Как использовать telnet в скрипте? - PullRequest
0 голосов
/ 26 мая 2019

Мне нужно подключиться в системе, где я должен сначала SSH, а затем Telnet. Тогда я могу начать выполнять какую-то команду. Я борюсь за часть телнета. Можете ли вы сказать мне, как я могу сделать это, пожалуйста? Есть ли другая альтернатива, кроме spawn, пожалуйста? Спасибо

#!/bin/bash
cat command.sh | sshpass -p 'passowrd' ssh -q -o StrictHostKeyChecking=no root@pc1;

Тогда моя команда.sh

#!/bin/bash
spawn telnet pc_modem
expect "login:"
send "root"
expect "Password:"
send "youyou"

cliclient GetMonitoringData;

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Я узнаю ответ и отлично работает:

/bin/expect <<<'spawn telnet pc_modem 
expect "login:"
send "root\r"
expect "Password: ";
send "youyou\r"

send "yourcommand1\r"
send "yourcommand2\r"

expect eof
'
0 голосов
/ 27 мая 2019

В этом случае, шебанг не действует *.Вы передаете содержимое файла скрипта в 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), шебанг не вступает в игру.

...