Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby telnet在输入密码提示期间挂起_Ruby_Scripting_Telnet - Fatal编程技术网

Ruby telnet在输入密码提示期间挂起

Ruby telnet在输入密码提示期间挂起,ruby,scripting,telnet,Ruby,Scripting,Telnet,我对ruby非常陌生,只是想用它来编写一些基本的脚本。即telnet进入一台机器,并使用dos ftp客户端将一些文件拉过来 我遇到的问题是,当我尝试手动(从命令提示符)远程登录到计算机时,我收到以下消息: 当我使用ruby的telnet类(net/telnet)login()时,它挂起在密码提示上。这让我觉得它没有考虑消息,而是将用户名发送到消息,将密码发送到用户名提示符。我如何处理这种情况 编辑:在密码提示期间,登录过程似乎确实挂起。这只是我的怀疑,这是由上述信息引起的,任何其他想法都是值得

我对ruby非常陌生,只是想用它来编写一些基本的脚本。即telnet进入一台机器,并使用dos ftp客户端将一些文件拉过来

我遇到的问题是,当我尝试手动(从命令提示符)远程登录到计算机时,我收到以下消息:

当我使用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'
irb(main):030:0>tn=Net::Telnet::new(“主机”=>“xxx.xxx.xxx.xxx”,“超时”=>10)=>#
irb(main):031:0>tn.login(“管理员”、“密码”){| c | print c}
欢迎使用Microsoft Telnet服务
登录名:管理员
密码:超时::错误:等待更多数据时超时
来自C:/Ruby/lib/Ruby/1.8/net/telnet.rb:551:in'waitfor'
来自C:/Ruby/lib/Ruby/1.8/net/telnet.rb:685:in`cmd'
来自C:/Ruby/lib/Ruby/1.8/net/telnet.rb:730:in'login'

首先,尝试传递
输出日志
参数,以便查看正在发生的一切:

host = Net::Telnet::new(
       "Host"       => "localhost",
       "Port"       => 23,
       "Output_log" => "output_log")
看看这是否能告诉你发生了什么,我看到的唯一其他可能产生影响的选项是
Binmode=>false

查看以了解更多信息:-)


编辑1:您还可以选中
提示符
选项。显然,这是决定命令何时完成的因素。如果它与服务器上的提示不匹配,几乎肯定会把它搞砸。

首先,尝试传递
输出日志
参数,以便您可以看到正在发生的一切:

host = Net::Telnet::new(
       "Host"       => "localhost",
       "Port"       => 23,
       "Output_log" => "output_log")
看看这是否能告诉你发生了什么,我看到的唯一其他可能产生影响的选项是
Binmode=>false

查看以了解更多信息:-)


编辑1:您还可以选中
提示符
选项。显然,这是决定命令何时完成的因素。如果它与服务器上的提示不匹配,几乎肯定会把它搞砸。

我发现了。不打算删除此项,因为可能有其他人遇到此问题,但我的超时设置太低。将其设置为25解决了问题。

我找到了答案。不打算删除此项,因为可能有其他人遇到此问题,但我的超时设置太低。将其设置为25解决了问题。

这可能不值得任何向上投票,因为问题的超时值太低(请参阅答案)。这可能不值得任何向上投票,因为问题的超时值太低(请参阅答案)您应该选择此选项作为答案,以便其他搜索者可以看到已找到解决方案:-)如果您在10秒后过早超时,您可能只想将超时设置为nil,然后让connect()连接调用处理超时。您应该选择此作为答案,以便其他搜索者看到已达到解决方案:-)如果您在10秒后过早超时,您可能只想将超时设置为零,然后让connect()调用处理超时。