目前,我正在开发Rails应用程序。我必须ssh进入系统并返回系统信息,例如Ubuntu版本,bios版本等。

我正在使用net-ssh gem,它工作正常。

这是我的示例代码:

require 'net/ssh'
def check_bios_version
  Net::SSH.start('localhost','ubuntu', :password => '1234') do |session|
    return vid = session.exec!("echo 'ubuntu1234' | sudo -S dmidecode -s bios-version")
  end
end

问题是,有时ssh需要花费太多时间。

有没有可以用来追踪时间的工具或功能?
或者,还有其他方法可以添加时间检查,例如,如果ssh session 的时间大于1分钟,则返回“无法登录”。

我正在使用Ruby 1.8.7和Rails 3.2.14。

最佳答案

您可以像这样使用 timeout module:

require 'net/ssh'
require 'timeout'

def check_bios_version
  Timeout::timeout(60) {
    Net::SSH.start('localhost','ubuntu', :password => '1234') do |session|
      return vid = session.exec!("echo 'ubuntu1234' | sudo -S dmidecode -s bios-version")
    end
  }
end

如果超时,它将引发Timeout::Error,您可以捕获此错误以打印出“无法登录”消息。

关于ruby-on-rails - 如何使用net-ssh gem跟踪ssh进入系统所需的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26124574/

10-11 09:09
查看更多