如何在Ruby中使用Net::SSH复制文件?

How to copy files using Net::SSH in Ruby?

据我所知,如果我想将文件复制到远程主机然后从命令行对其进行操作,我需要同时使用 Net::SCP 和 Net::SSH。

最好设置一个 SSH 会话,进行复制,然后使用相同的连接解压文件并安装它们。

我是不是漏掉了什么?

Net::SCP 允许您从现有的 Net::SSH 会话中轻松获取 Net::SCP 引用:

require "net/ssh"
require "net/scp"
Net::SSH.start("remote.host", "username", :password => "passwd") do |ssh|
  ssh.scp.upload("/local/path", "/remote/path")
  ssh.exec("...insert commands...")
end

在此处阅读更多内容:http://net-ssh.github.io/net-scp/classes/Net/SCP.html

你考虑过Net::SFTP吗?连同它和 Tempfile,我目前正在一个项目中使用它从本地复制到远程。您还可以进行简单的文件修改。如果您愿意,可以使用 Stream.IO 进一步编辑文件。

https://github.com/net-ssh/net-sftp

http://net-ssh.github.io/net-sftp/