我对ruby非常陌生,只是想用它来做一些基本的脚本编写。即telnet到一台机器并使用dos ftp客户端拉出一些文件。
我遇到的问题是当我尝试手动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类(net / 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'
答案 0 :(得分:3)
我明白了。不会因为其他人遇到问题但我的超时设置得太低而不能删除它。将其设置为25解决了问题。
答案 1 :(得分:2)
首先,尝试传递Output_log
参数,以便您可以看到正在发生的一切:
host = Net::Telnet::new(
"Host" => "localhost",
"Port" => 23,
"Output_log" => "output_log")
看看这是否告诉你发生了什么,我看到的唯一可能产生影响的其他选项是Binmode => false
。
查看docs以获取更多信息: - )
修改1:您还可以查看Prompt
选项。显然,这是决定命令何时完成的原因。如果它与您服务器上的提示不符,那几乎肯定会搞砸它。