Ruby脚本 - 登录期间Telnet挂起

时间:2009-06-08 20:26:43

标签: ruby scripting telnet

我正在尝试使用ruby通过telnet登录到Windows机器并使用dos命令行ftp拉出一些文件来做一些基本脚本。当我手动完成这一切时,一切都顺其自然,但是当我通过ruby尝试时,我在登录电话中遇到错误。

以下是我的测试程序:

require 'net/telnet'
tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>25, "Output_log"=>"output_log.log", "Dump_log"=> "dump_log.log", "Prompt"=>"C:.*>")
tn.login("administrator", "xxxxxxx") {}
tn.cmd('dir')
exit

output_log的内容不会背叛任何错误:

Trying 208.10.202.187...
Connected to 208.10.202.187.
Welcome to Microsoft Telnet Service 
login: administrator
password: 
*===============================================================
Welcome to Microsoft Telnet Server.
*===============================================================
C:\Documents and Settings\Administrator>

与dump_log相同,后者具有非常相似但格式不合适的内容。当我运行该程序时,它会暂时停留一段时间,然后输出以下错误:

PS C:\code\tools\deployment> ruby test.rb
C:/Ruby/lib/ruby/1.8/net/telnet.rb:551:in `waitfor': timed out while waiting for more data (Timeout::Error)
        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'
        from test.rb:3

这让我怀疑telnet类没有识别命令提示符。我已经为Prompt参数尝试了几个不同的正则表达式字符串,包括默认值,似乎没有任何帮助。

1 个答案:

答案 0 :(得分:3)

我认为提示字段需要正则表达式,而不是字符串 试试

tn = Net::Telnet::new("Host"=>"xxx.xxx.xxx.xxx", "Timeout"=>25,
"Output_log"=>"output_log.log", "Dump_log"=> "dump_log.log",
"Prompt"=> /C:.*>/)