我有一个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)
答案 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
从视图中使用辅助方法。