[英]Elixir with “scp” — permission denied and connection lost
我正在尝试将文件从远程服务器B复制到远程服务器A。我的Elixir应用程序在服务器A上。我正在这样做:
a1 = System.cmd("scp", ["[serverB.....]", "/opt/folder1/"])
# => Permission denied
# {"", 1}
a2 = System.cmd("scp", ["serverB.....]", "/home/my_user"])
# => Connection to serverB closed by remote host.
# lost connection
# {"", 1}
在第一种情况下,我只收到“权限被拒绝”。
在第二种情况下,我确实收到了一个文件,但是为什么它看起来好像失败了?
我的目标是首先工作,因为我希望将文件直接下载到“ / opt / folder1 /”。 最好。
我怎样才能做到这一点? 是否可以通过scp? 还是应该先将其下载到我的主目录?
它为什么样的失败,在第2个的情况下 ,有什么不对?
另外,也许我应该改用rsync
以避免权限问题?
更新:
我已授予文件夹“ / opt / folder1 /”的权限
sudo chmod 775
但是错误并没有消失。
更新2
我已授予777权限。它的工作方式很多种-文件已下载。 但是返回结果仍然是这样:
Connection to bb.bb.bb.bb closed by remote host.
lost connection
{"", 1}
这是为什么? 1暗示“错误”不是吗? 更不用说“失去联系”了。
使用普通的旧ssh
登录到serverB
并执行:
sudo chown -R my_user /opt/folder1/
或(如果并且只有您完全了解后果):
sudo chmod a+xw /opt/folder1/
从远程注销。 现在您应该能够成功执行System.cmd/3
。
通常, scp
命令的格式为:
scp SOURCE_FILE TARGET_USER@TARGET_HOST:TARGET_DIR
因此,您最好执行以下操作:
System.cmd("scp", ["my_local_file", "my_user@bb.bb.bb.bb:/opt/folder1/"])
这样,您应该收到System.cmd/3
{"", 0}
响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.