首页 > 解决方案 > Ruby Net::SSH 重用会话

问题描述

我有几种方法可以做到这一点:

def method_a
    Net::SSH.start(...) do |ssh|
    end
end

def method_b
    Net::SSH.start(...) do |ssh|
    end
end
def method_c
    Net::SSH.start(...) do |ssh|
    end
end

每个方法都调用 Net::SSH start ,它们是单独的 SSH 会话,做不同的事情。

有没有办法重用 Net::SSH 会话,以便所有 3 种方法都使用一个会话?

谢谢。

标签: rubynet-ssh

解决方案


是的,你绝对可以让它变干。

您可以添加一种接受 Net::SSH 连接的主机名的方法,如下所示:

def ssh_exec(hostname)

  Net::SSH.start( hostname, 'user', :timeout => 5, :paranoid => false ) do |ssh|

   ....
  end
end

然后,您可以在需要的任何地方使用正确的主机名调用此方法ssh_exec()...


推荐阅读