gpt4 book ai didi

ruby - 我可以在同一个 SSH session 中使用 exec 和 upload 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:15 25 4
gpt4 key购买 nike

我需要在 ssh session 期间执行多个操作。目前我正在使用 SSH.startSCP.start 分别进行远程操作和上传。这是一个例子:

Net::SSH.start(host, user, options) do |session|
output = session.exec!(cmd)
end

Net::SCP.start(host, user, options) do |scp|
scp.upload!(src, dst, :recursive => true)
scp.upload!(src1, dst1, :recursive => true)
end

Net::SSH.start(host, user, options) do |session|
output = session.exec!(cmd)
end

问题是对于每个操作都需要重新建立 SSH 连接,这会影响整体性能。

有没有办法打开 session ,然后执行所有必需的操作,例如命令、上传和下载?

最佳答案

SSH 协议(protocol)允许每个连接有多个 channel 。所以从技术上讲这是可能的。

我不知道 Ruby net-ssh 的实现,但从它的 API 来看它似乎支持这个。

constructor of Net::SCP class需要一个退出的 SSH session 。

# Creates a new Net::SCP session on top of the given Net::SSH +session+
# object.
def initialize(session)

因此,将现有的 Net::SSH 实例传递给 Net::SCP 构造函数,而不是使用 .start 启动新 session 方法。

关于ruby - 我可以在同一个 SSH session 中使用 exec 和 upload 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33029623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com