从Rails应用程序使用SSH远程执行命令

时间:2014-02-02 15:08:29

标签: ruby-on-rails ruby ssh remote-access

我有一个Rails应用程序,我将在控制器中调用一个Ruby定义,就像这样。

ssh root@host "uptime" >> /tmp/output

当我这样做时,只创建了/ tmp / output而不是内容。 当我从简单的Ruby脚本运行它时,工作正常。

我的控制器定义

  def chefclient1
    `ssh root@host "uptime" >> /tmp/output`
    @time = Time.now
  end

我的观点

= link_to('Start uptime', host_chefclient1_path)

1 个答案:

答案 0 :(得分:1)

您可以使用 net-ssh gem通过ssh for ruby​​ app访问远程主机。将您的环境设置为:

HOSTNAME = 'host'
USER = 'root'
PASS = 'password'

添加到 your_helper.rb:,例如:

def chefclient1
   result = nil
   Net::SSH.start( ENV[ 'HOSTNAME' ], ENV[ 'USER' ], :password => ENV[ 'PASS' ] ) do| ssh |
      result = ssh.exec! 'uptime'
      puts result
   end

   File.open( '/tmp/output', 'w' ) {| f | f.puts result }
end

从视图中使用辅助方法。