我正在尝试使用带有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将不会被替换。