2014-01-09 88 views
0

我正在尝试进行telnet连接并发送强制重新启动然后终止连接的命令。到目前为止,我有:发送telnet命令并终止连接而不等待响应

require 'net/telnet' 
host = 192.168.20.11 
connection = Net::Telnet::new("Host" => host) 
connection.login("User") 
connection.cmd("Reboot") 

这工作,达到了我想要它,但该程序然后等待来自该是没有的,因为它正在重新启动,重新启动命令的反馈,该计划因此失败。有没有办法可以发送命令,然后关闭连接而无需等待反馈?这将允许我继续完成整个过程。

回答

0

不幸的是,我没有看到任何记录来处理这个问题的方法。你也许可以伪造它是这样的:

begin 
    connection.cmd("String" => "Reboot", "Timeout" => 0.1) 
rescue # I'm not sure what that will raise, but you should rescue that specific error here 
    nil 
end 

我要问,虽然,有没有可以用ssh,而不是telnet什么办法?

+0

这可能值得一试,可能会有所帮助。至于ssh,我现在只是在研究这个问题,在发布这个后发现了这个问题。但是从来没有在ruby中完成ssh,所以我正在通过指令运行。感谢您的建议。 – Maximillion

+0

'net/ssh'比telnet更精致(更不用提无限更安全)。 – Eugene

+0

你的答案是轰动的。由于我们知道并且救援让我很好,重新启动导致连接下降,“救援”并优雅地杀死它。谢谢 – Maximillion