"scp" 的 Elixir -- 权限被拒绝并且连接丢失
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吗?还是我应该先将它下载到我的主目录?
为什么在 第二种情况 中有点失败,怎么了?
此外,也许我应该改用 rsync
来避免权限问题?
更新:
我已授予文件夹“/opt/folder1/”
的权限
sudo chmod 775
但错误并没有消失。
更新2
我已授予 777 权限。一切正常 -- 文件已下载。但是 return 结果仍然是这样的:
Connection to bb.bb.bb.bb closed by remote host.
lost connection
{"", 1}
这是为什么? 1 意味着 "error" 不是吗?更别说"lost connection".
使用 plain old good 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}
回复。
我正在尝试将文件从远程服务器 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吗?还是我应该先将它下载到我的主目录?
为什么在 第二种情况 中有点失败,怎么了?
此外,也许我应该改用 rsync
来避免权限问题?
更新:
我已授予文件夹“/opt/folder1/”
的权限 sudo chmod 775
但错误并没有消失。
更新2
我已授予 777 权限。一切正常 -- 文件已下载。但是 return 结果仍然是这样的:
Connection to bb.bb.bb.bb closed by remote host.
lost connection
{"", 1}
这是为什么? 1 意味着 "error" 不是吗?更别说"lost connection".
使用 plain old good 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}
回复。