gpt4 book ai didi

ruby - 如何使用 Ruby Net::SSH.start 传输多个文件?

转载 作者:数据小太阳 更新时间:2023-10-29 08:59:38 25 4
gpt4 key购买 nike

我想将所有文件从远程主机 /root/files/*.log 复制到我当前的目录 - ./files1/

require 'rubygems'
require 'net/ssh'
require 'net/scp'

Net::SSH.start( scp_hostname, scp_username, :keys => scp_keys, :timeout => 360 ) do |ssh|
ssh.scp.download!( '/root/files/*.log', './files1/' )
ssh.exec!( .. )
ssh.exec!( .. )
end

我有一个异常(exception):

caught exception SCP did not finish successfully (1): scp: /root/files/*.log: No such file or directory

但是当我复制一个特定的文件时它起作用了

ssh.scp.download!( '/root/files/myfile.log', './files1/' )

有人能帮忙吗?

谢谢!

最佳答案

我建议为此使用 net sftp,因为它允许更优雅的 globing 目录。这里:

require 'net/sftp'
Net::SFTP.start( scp_hostname, scp_username, :keys => scp_keys, :timeout => 360 ) do |sftp|
sftp.dir.glob("/remote/path", "*.log") do |file|
sftp.download!( "/remote/path/#{file.name}", "./files1/#{file.name}" )
end
end

或者对于 ssh,您可以使用以下技巧:

Net::SSH.start( scp_hostname, scp_username, :keys => scp_keys ) do |ssh|
logfiles = ssh.exec!( 'ls /remote/path/*.log' ).split
logfiles.each { |file|
ssh.scp.download!( file, file )
}
end

关于ruby - 如何使用 Ruby Net::SSH.start 传输多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39675734/

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