Ruby Net:Telnet 连接windows2008诡异失败

问题我用Net:Telnet尝试去连接windows2008,并执行命令,但是出现一些很诡异的问题,

如果我执行

tn = Net::Telnet::new("Host"=>"walnutserver","Port"=>2300,"Prompt"=> /C:.*>/)tn.login("user","pass")tn.cmd("dir")tn.cmd("dir")

第一个tn.cmd(“dir”) 能正常运行,而第二个tn.cmd(“dir”) 抛出异常,并且后继无论执行什么命令都是失败的,返回nil。其中,经过实验,无论是什么cmd命令(不只dir命令),都会出现相同的问题,执行一个之后,后继的操作都会失败。异常如下:

Timeout::Error: timed out while waiting for more data        from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:558:in `waitfor'        from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:697:in `cmd'        from (irb):20        from c:/troy/data/chef/chef-client11/chef/embedded/bin/irb:12:in `<main>'

用sock.sysread()方法可以看到系统显示了 dir\r\n0x00More? ,然后就卡在那里了。

但是如果我执行

tn = Net::Telnet::new("Host"=>"walnutserver","Port"=>2300,"Prompt"=> /C:.*>/)tn.login("user","pass")tn.cmd("ls")tn.cmd("uname")

则不会出现上述问题。其中ls、uname是在windows中安装的chef只带的linux命令(可能是cygwin)。

网上有人跟我遇到一样的问题,但是也没有找到解决办法 http://www.ruby-forum.com/topic/1516840

有没有哪位遇到相似的问题,并成功解决了?

ruby版本:ruby 1.9.3p286 (2012-10-12) [i386-mingw32]

Ruby Net:Telnet 连接windows2008诡异失败

相关文章:

你感兴趣的文章:

标签云: