2011-12-30 34 views
0

這是我通過普通telnet或甚至通過ruby telnet獲得的數據。我不知道如何告訴它退出當它到達END DATABASEtelnet拉數據超時問題

# Manual telnet method 
Trying 10.1.1.12... 
Connected to 10.1.1.12. 
Escape character is '^]'. 
F#1= 
F#1= 
BEGIN DATABASE 

2011-12-29 13:53,1,Hefer Meal,240,247,Z88,1,1 
2011-12-29 13:53,1,Vegetable Oil,30,59,Z88,1,1 
2011-12-29 13:55,2,Vegetable Oil,100,106,530,1,1 
2011-12-29 13:55,2,Steer Meal,800,809,530,1,1 
2011-12-29 13:56,3,Vegetable Oil,150,153,530,1,0 
2011-12-29 13:57,3,Steer Meal,1200,1203,530,1,0 
2011-12-29 14:30,4,Vegetable Oil,17,18,210,1,1 
2011-12-29 14:31,4,Liquid Starter,388,394,210,1,1 
2011-12-29 14:39,5,Hefer Meal,1200,1227,Z88,1,2 
2011-12-29 14:40,6,Hefer Meal,1200,1240,Z88,1,2 
2011-12-29 14:41,7,Hefer Meal,1200,1207,Z88,1,0 
2011-12-29 14:43,8,Hefer Meal,1200,1286,Z88,1,2 
2011-12-29 14:46,9,Vegetable Oil,115,122,530,1,1 
2011-12-29 14:50,9,Steer Meal,920,950,530,1,1 
2011-12-29 14:56,10,Vegetable Oil,47,48,312,1,0 
2011-12-29 14:57,10,Steer Meal,237,261,312,1,1 
2011-12-29 14:58,10,Liquid Starter,389,394,312,1,1 
END DATABASE 

這裏是我的代碼:

#!/usr/local/bin/ruby 
require 'net/telnet' 
localhost = Net::Telnet::new("Host" => "10.1.1.12", "Timeout" => 10, "Port" => 10001) { |resp| print "===> " + resp } 
localhost.cmd("F#1=") do |data| 
    print data 
end 

當這個運行時,它輸出的所有數據,然後等待和錯誤:

/usr/lib/ruby/1.8/net/telnet.rb:557:in `waitfor': timed out while waiting for more data (Timeout::Error) 

我真的不知道該從哪裏出發,我已經看過this頁面瞭解如何處理它的更多信息,但我找不到任何東西。

感謝您的任何幫助。

回答

1

看來你在這裏使用的是非標準的telnet服務器。初始化時請將「Telnetmode」設置爲false。

localhost = Net::Telnet::new("Host" => "10.1.1.12", "Telnetmode" => false, "Timeout" => 10, "Port" => 10001) { |resp| print "===> " + resp } 
+0

我仍然收到與您提供的代碼相同的錯誤。感謝您的幫助,我希望您能提供任何其他建議。 – 2012-01-06 23:26:41

+0

使供應商改變了telnet的工作方式,然後你的代碼幫助我。謝謝。 – 2012-01-23 21:06:52