как автоматизировать тестирование текстового меню - PullRequest
3 голосов
/ 17 марта 2010

У меня есть текстовое меню, работающее на удаленном хосте Linux. Я использую ожидаем ssh в этот хост и хотел бы выяснить, как взаимодействовать с меню. Взаимодействие включает в себя стрелки вверх, вниз и с помощью клавиш ввода и возврата. Например,

Disconnect
Data Collection >
Utilities >
Save Changes

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

Следующий код войдет в мою систему по ssh и вызовет меню. Если я удаляю ожидаемый eof и пытаюсь отправить «\ r», думая, что это выберет пункт меню «Отключить», я получаю следующую ошибку: «write () ничего не записал - будет спать (1) и повторять ...»

#!/usr/bin/expect
set env(TERM) vt100

set password abc123
set ipaddr 162.116.11.100

set timeout -1
match_max -d 100000

spawn ssh root@$ipaddr
exp_internal 1
expect "*password:*"

send -- "$password\r"
expect "Last login: *\r"

expect eof

Я посмотрел примеры virterm и term_expect, но не могу понять, как настроить их для меня. Если кто-то может указать мне правильное направление, я был бы очень признателен. Что мне нужно знать, так это то, могу ли я взаимодействовать с системой текстового меню и каков правильный метод для этого, примеры, если таковые существуют, были бы хорошими.

спасибо, -reagan

Ответы [ 3 ]

1 голос
/ 22 марта 2010

Чтобы упростить свою жизнь, вы можете настроить шифрование с открытым ключом, чтобы вы могли использовать ssh на удаленном хосте без пароля. Тогда вы можете сосредоточиться на тестировании своего программного обеспечения вместо ssh. Google "SSH логин без пароля" для получения дополнительной информации. Инструкции, которые вы найдете, просты, так что не бойтесь.

1 голос
/ 17 марта 2010

Попробуйте использовать инструмент autoexpect для записи интерактивного сеанса и посмотрите, как выглядят коды.

0 голосов
/ 24 апреля 2010

Вы пробовали \ n \ n \ r?

...