2009-06-08 73 views
1

我對Ruby非常陌生,只是試圖用它來做一些基本的腳本。即telnet到一臺機器上,並使用dos ftp客戶端來拖動一些文件。在輸入密碼提示期間,Ruby telnet掛起

我已經是當我嘗試手動遠程登錄到機器(從命令提示符)這個問題我得到以下信息:

Welcome to Microsoft Telnet Client 

Escape Character is 'CTRL+]' 

You are about to send your password information to a remote computer in Internet zone. This might not be safe. Do you want to send anyway(y/n): 

當我使用Ruby的遠程登錄類(淨/ telnet)login()會掛起密碼提示。這導致我認爲它沒有考慮到該信息,將用戶名發送到用戶名提示的消息和密碼。我如何處理這種情況?

編輯:登錄過程似乎在密碼提示期間掛起。這僅僅是我懷疑這是由上述信息引起的,任何其他想法都是值得讚賞的。我試圖呼應一切,我得到如下:

irb(main):030:0> tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>10) => #<TCPSocket:0x2d8aafc> 
irb(main):031:0> tn.login("administrator", "password") {|c| print c} 
Welcome to Microsoft Telnet Service 

login: administrator 
password: Timeout::Error: timed out while waiting for more data 
     from C:/Ruby/lib/ruby/1.8/net/telnet.rb:551:in `waitfor' 
     from C:/Ruby/lib/ruby/1.8/net/telnet.rb:685:in `cmd' 
     from C:/Ruby/lib/ruby/1.8/net/telnet.rb:730:in `login' 
+1

這可能不值得任何迴應,因爲問題太短暫(見答案) – 2009-06-08 14:26:02

回答

2

首先,嘗試傳遞Output_log參數,以便你可以看到一切,是怎麼回事:

host = Net::Telnet::new(
     "Host"  => "localhost", 
     "Port"  => 23, 
     "Output_log" => "output_log") 

看看這個告訴你什麼正在進行中,我看到的唯一可能會有所作爲的其他選項是Binmode => false

檢查docs更多信息:-)

編輯1:您還可以檢查Prompt選項。顯然,這決定了命令何時完成。如果它不符合你的服務器上的提示,它幾乎肯定會搞砸了。

3

我想通了。不會在別人遇到問題的機會上刪除此項,但我的超時設置過低。將其設置爲25即可解決問題。

+1

您應該選擇這個作爲您的答案,以便其他人搜索時會看到已經達到解決方案:-) – 2009-06-10 22:38:00