выберите опцию интерактивного меню в bash shell - PullRequest
2 голосов
/ 10 октября 2019

Мне нужно создать оболочку, которая делает выбор в интерактивном меню. В ручной версии я выполняю:

- ssh connection to the host
- I select the menu item 4 (console start)
- I run the "show vpn connection" command (it returns a number)
- I type "exit" to close the console
- I select the menu item 0 (exit)

Я пытался создать оболочку такого типа:

#!/bin/bash
HOST=172.19.0.9
USER="admin"
PASSWORD="xxxxxxxxxx"
COMMAND="show vpn connection status"
SSH="/usr/bin/ssh"
$SSH -tt $USER@$HOST << EOF
4
$COMMAND
exit
0
EOF

Он запрашивает у меня пароль, но вывод мне не возвращается. Я получаю только сообщение «Соединение с $ HOST закрыто». Может кто-нибудь помочь мне? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я решил проблему с помощью «ожидать». Пример:

#!/usr/bin/expect -f
spawn ssh <HOST IP> -l admin
expect "password:"
send "<Admin Password>\r"
expect "Select Menu Number \[0-7\]:"
send "7\r"
expect "Shutdown(S/s) or Reboot(R/r) Device  (S/s/R/r):  No (Enter) >"
send "r\r"
expect eof
exit

Спасибо всем. AlAn

0 голосов
/ 10 октября 2019

Так что я думаю, что это может помочь вам:

Поместите все ваши команды в file, затем выполните

cat file | sshpass -p $yourpassword ssh -T IP_address

, это прочитает файл ипередать его как STDIN для команды ssh. sshpass должен пройти после входа в систему, а ssh -T отключает псевдо-tty распределение ( Псевдо-терминал не будет выделен, потому что stdin не является терминалом )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...