Използвам библиотеката 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 просто да ми изпрати текст, разделен на новите редове? Или друг начин да поправите това?
Благодаря, Стюарт