ruby - 通过 ssh 调用远程命令,使用 Ruby,改进语法?

标签 ruby ssh

目前我正在使用反引号方法调用远程脚本,它可以工作,但感觉不对而且令人讨厌...

`ssh user@host $(echo "~/bin/command \\\"#{parameter}\\\"")`

谁能给我一个更好的表达方式?

非常感谢。

最佳答案

我会让它变得漂亮一点,如果那是你想要的:

#!/usr/bin/env ruby
# encoding: utf-8

home    = "/path/to/users/home/on/remote"
binary  = File.join(home, "bin", "command")
command = "#{binary} '#{parameter}'"
puts `ssh user@host #{command}`

否则,您可以使用 net-ssh图书馆,然后做这样的事情:

#!/usr/bin/env ruby
# encoding: utf-8

require 'net/ssh'
Net::SSH.start('host', 'user', :password => "<your-password>") do
  home    = "/path/to/users/home/on/remote"
  binary  = File.join(home, "bin", "command")
  command = "#{binary} '#{parameter}'"
  output = ssh.exec!(command)
  puts output
end

显然,有自动获取远程用户主目录路径的方法,但我跳过了那部分。

关于ruby - 通过 ssh 调用远程命令,使用 Ruby,改进语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672733/

相关文章:

ruby-on-rails - ruby 类和同名模块之间有什么关系?

ruby-on-rails - 将 Rails 与 Paperclip 和 SWFUpload 结合使用

ssh - 共享 SSH key

mysql - 本地 shell 中的 ssh 连接和远程输出

ssh - 当我在 ssh 上收到 'Broken Pipe' 错误时,EC2 实例中的进程会发生什么?

ruby - rvm:找不到命令(Fedora 12)

ruby-on-rails - Rails 4 参数;如何将参数列入一组值的白名单

ruby - 为什么在编译ruby-1.9.3-p125时出现clang错误?

python - 'git clone .. .' works but not ' pip install ...' 对于相同的远程 url

shell - su -c 的 ANT SSHEXEC 密码提示问题