尝试在Ruby/Rails中使用SFTP.download来理解和下载文件



我正在尝试使用带有sftp.download!('path/to/remote/folder/#{filename}', 'path/to/local/folder)的SFTP方法将文件下载到Rails应用程序中

完整的方法:

def missouri 
sftp = Net::SFTP.start('host.name', '<username>', password: '<password>')
sftp.dir.entries('/path/to/remote/folder/') do |entry|
sftp.download!('/path/to/remote/folder/#{entry.name}.txt', '/Users/<me>/local/folder/') 
end
end

我得到一个错误:

RuntimeError (open /path/to/remote/folder/filename.txt: no such file (2))

如果我去掉文件扩展名(txt(,我会得到错误:

Errno::EACCES (Permission denied @ rb_sysopen - /Users/<me>/local/folder/)

当我"深入"到该部分并运行此方法时,我会返回NET::Sftp对象的所有属性,但没有实际下载。我试图访问的SFTP是一个ASPX.人工页,我试图下载文件的路径在远程站点的文件结构中,所以我不确定我是否试图访问错误的路径?

如果我去实际的SFTP,我可以清楚地看到那里有一个文件。

您在提问后添加的注释让我们怀疑unix权限。您的脚本是否由允许在目标本地目录上写入的用户启动?

换句话说,以下shell命令的输出是什么?

ls -l /path/to/remote/folder

使用您脚本的用户/组是什么?

顺便说一句,你的代码中有一件奇怪的事:

sftp.download!('/path/to/remote/folder/#{entry.name}.txt'

应该是:

sftp.download!("/path/to/remote/folder/#{entry.name}.txt"

否则entry.name将不会被替换。

相关内容

最新更新