2013-04-30 1 views
4

Существует узел, в котором я удаляю ssh и запускаю сценарий удаленно с помощью Robot Framework (SSHLibrary.Start Command или Execute Command). Этот удаленный скрипт запускает telnet-соединение с другим узлом, который скрыт снаружи. Этот вызов telnet, по-видимому, является блокирующим событием для робота. Я использую RIDE для выполнения теста, и он просто перестает работать. Я могу отправить сигналы остановки неэффективно. Возможно ли запустить telnet в ssh?Есть ли способ использовать telnet в ssh-соединении в Robot Framework?

ответ

2

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

Открыть соединение SSH к первой машине. В этом соединении используйте ключевые слова SSHLibrary, такие как Set Prompt, Write и Read или Read Until. Попросите вручную открыть telnet-подключение к следующей машине. Запись и чтение Ключевые слова могут быть использованы как ожидаемые и нерестовые ...

+0

Записывать и читать до тех пор, пока не будет предложено сочетание комбинаций. Раньше я пытался запустить telnet с помощью команды «Пуск» и «Выполнить команду» без успеха. Теперь я получаю приглашение от telnet, но я больше не могу отправить команду. Тем не менее, я правильно установил приглашение, тест завершился неудачей: «Не найдено совпадений для '/ в течение 3 секунд здесь есть строка/здесь. Я не знаю. – Milo

3

Все возможно.

Опишем ваш сценарий как: Robot Framework работает на машине A. Тест соединяет A с машиной B через ssh и B с машиной C через telnet.

С вашего вопроса неясно, на каком этапе тест застревает. Действительно ли тест устанавливает соединение telnet? Действительно ли процесс telnet начинается с B?

Здесь вы должны рассмотреть две связанные проблемы.

Во-первых, Robot Framework выполняет тест в одном потоке. Это означает, что тест делает не до тех пор, пока не вернется ключевое слово. Если вы хотите, чтобы сеанс telnet был открыт во время теста, вы должны использовать команду SSHLibrary.start, а не выполнить команду.

Второй момент - управление программным соединением сеанса telnet. Клиент telnet должен поддерживать какое-то пакетное выполнение (например, не запрашивать пароль или выполнять сброс ввода). Убедитесь, что вы можете выдавать команды на C из теста. Вы должны иметь возможность перенаправлять команды для C, используя , пишите ключевых слов. Вы можете проверить работоспособность клиента telnet, указав файл команд с его стандартного ввода. Что-то вроде

cat commands_for_c.txt | telnet ...to..c... 
+0

Ваше описание о моем сценарии верное. Раньше я пытался запустить telnet с помощью команды «Пуск» и «Выполнить команду». Тогда было похоже, что соединение не установлено. Теперь я использую просто Write, и я возвращаю приглашение от telnet, но Robot, похоже, забывает мой предварительный набор или что-то в этом роде. См. Мой другой комментарий к ответу sdmythos_gr. – Milo

+0

Кошка с конвейером может быть хорошим способом сделать это ... Функция набора подсказок, если я не ошибаюсь, изменилась в последней sshlibrary, и может случиться так, что она устанавливается только один раз для каждого соединения. В тестовом режиме мы используем одну из предыдущих версий библиотеки ssh (думаю, 0.9), поэтому перед любой командой записи мы устанавливаем ожидаемую подсказку. i. Установите подсказку Password: и затем напишите пароль. Затем установите приглашение>, а затем запишите команды ... –

+0

Я взглянул на журнал изменений в SSH Library.По моему мнению, это говорит о том, что приглашение используется глобально (и вы можете изменить его столько раз, сколько захотите), и все используемые соединения, но теперь каждое отдельное соединение может иметь свое собственное приглашение. – Milo

Смежные вопросы