【问题标题】:Send a telnet command and kill connection without waiting for a response发送 telnet 命令并终止连接而不等待响应
【发布时间】:2014-01-10 03:51:54
【问题描述】:

我正在尝试建立一个 telnet 连接并发送一个强制重启然后终止连接的命令。到目前为止,我有:

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

这工作并实现了我想要的,但是程序然后等待来自重新启动命令的反馈,因为它正在重新启动,所以程序失败。有没有办法我可以发送命令然后关闭连接而不等待反馈?这将使我能够继续整个过程。

【问题讨论】:

    标签: ruby automation telnet


    【解决方案1】:

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

    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

    【讨论】:

    • 这可能值得一试,可能会试一试。至于 ssh,我现在正在研究它,在发布这个之后我就想到了。但也从未在 ruby​​ 中完成 ssh,所以我正在按照说明进行操作。感谢您的建议。
    • net/ssh 比 telnet 精致得多(更不用说无限安全了)。
    • 你的回答很成功。正如我们所知,重新启动会导致连接中断,而救援让我能够很好地“拯救”它并优雅地杀死它。谢谢
    猜你喜欢
    • 2015-12-05
    • 1970-01-01
    • 2011-01-12
    • 2015-01-06
    • 1970-01-01
    • 2015-08-24
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多