Я использую библиотеку net/telnet в ruby для чтения данных с сервера. Он отправляет команды целыми строками с новой строкой в конце, поэтому я подумал, что сделаю это:
connection = Net::Telnet.new(options)
connection.waitfor(/\n/) do |txt|
process txt
end
Это не работает, потому что сразу отправляет мне целую кучу строк. Я могу исправить это довольно легко, вместо этого выполнив:
connection.waitfor(/\n/) do |txt|
txt.split("\n").each do |line|
process line
end
end
Вот только с этим тоже есть проблема: отправляемая мне строка почти всегда содержит половину команды в конце. то есть: если сервер отправлял это:
COMMAND1 option1 option2 option3
COMMAND2 option1 option2 option3
COMMAND3 option1 option2 option3
Я часто получаю это:
COMMAND1 option1 option2 option3
COMMAND2 option1 option2 option3
COMMAND3 opt
а затем я получу остальные параметры COMMAND3 при следующем чтении вместе с COMMAND4.
Есть ли способ заставить net/telnet просто отправить мне текст с разделителями на новые строки? Или другой способ исправить это?
Спасибо, Стюарт.