带有“scp”的Elixir - 权限被拒绝且连接丢失

时间:2016-12-27 13:30:49

标签: linux permissions elixir scp

我正在尝试将文件从远程服务器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

但错误并没有消失。

UPDATE2

我已经获得了权限777.它的工作方式 - 文件已下载。但返回的结果仍然如此:

Connection to bb.bb.bb.bb closed by remote host.
lost connection
               {"", 1}

为什么? 1意味着“错误”不是吗?更别说“失去了联系”。

1 个答案:

答案 0 :(得分:2)

使用普通旧版serverB登录ssh并执行:

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}回复。