Это не должно быть так сложно, но кажется, что и библиотеки Ruby и Python Telnet имеют неудобные API. Может ли кто-нибудь показать мне, как написать команду на хост Telnet, а затем прочитать ответ в строку для некоторой обработки?Telnet отправить команду, а затем прочитать ответ
В моем случае «ОТПРАВИТЬ» с помощью новой строки извлекает некоторые данные о температуре на устройстве.
С Python Я пробовал:
tn.write(b"SEND" + b"\r")
str = tn.read_eager()
, который ничего не возвращает.
В Ruby я пробовал:
tn.puts("SEND")
, который должен вернуть что-то, как хорошо, единственное, что я получил на работе есть:
tn.cmd("SEND") { |c| print c }
, которые вы не можете сделать с c
,
Я что-то упустил? Я ожидал что-то вроде библиотеки сокета в Ruby, с каким-то кодом, как:
s = TCPSocket.new 'localhost', 2000
while line = s.gets # Read lines from socket
puts line # and print them
end
Хотя вы можете сделать очень элементарное рукопожатие через Telnet, вам действительно нужно использовать «ожидать» -like библиотеки, чтобы предоставить вам возможность реагировать на неожиданные ответы и/или длительные задержки и перерывы. См. Http://stackoverflow.com/q/7142978/128421 для рекомендаций Ruby «ожидать». –
Итак, я посмотрел на некоторые из ожидающих библиотек для python и ruby, и похоже, что они имеют аналогичные настройки, такие как telnet libs. pexpect.expect() совпадает с telnetlib.wait_until(), насколько мое приложение идет? – bischoffingston
Другое дело, что я не хочу ожидать ответа, я хочу загрузить ответ в переменную. Метод ожидания в этих библиотеках только возвращает индекс, если совпадение найдено. – bischoffingston