是否可以使用SCP在服务器之间复制文件?

时间:2019-07-15 06:05:22

标签: docker ansible devops scp

我已经在计算机上执行了一个Ansible脚本。什么是

1。将文​​件从我的计算机复制到在远程计算机上运行的docker容器

file.pb

2。在docker容器上执行命令。该命令将使用复制的文件并对其进行签名。

这是命令

peer channel signconfigtx -f file.pb

现在,我想在从现在所在的Docker容器中使用相同的ansible脚本对其进行签名后,将该签名文件再次复制到另一台计算机上。

我想尝试SCP,但不确定会如何工作,因为它将要求输入密码。

有人可以建议我该怎么做吗?

编辑:

我尝试在本地计算机上从远程服务器中获取文件,但出现错误

  

致命:[user1]:失败! => {“ msg”:“无法创建本地   目录(/ home / dhiraj / ansible_practise / playlist / fetched / user1 / home / user1 / Documents / Blockchain / network / scripts):   [Errno 20]不是目录:   '/ home / dhiraj / ansible_practise / playlist / fetched / user1'“}

下面是我的ansible脚本

 - name:  Fetching a file from remote server
      fetch:
        src: "/home/user1/Documents/Blockchain/network/scripts/file.pb"
        dest: fetched

2 个答案:

答案 0 :(得分:1)

还有更多选择。

1)从docker到另一台计算机的scp

  • 将在Docker上运行scp的用户的公共密钥设置为您在另一台机器上连接的用户的authorized_key。
  • 在docker运行command:scp file.pb user @ another_machine:file.pdb

2)获取并复制

  • fetch从docker到您的计算机

  • copy从您的计算机转移到另一台计算机

3)获取并拉动

  • fetch从docker到您的计算机
  • 在另一台计算机上运行ansible-pull,然后运行将从您的计算机中提取文件的剧本。

4)在另一台计算机上运行scp ...

答案 1 :(得分:0)

我所做的不是使用服务器的fetch模块,而是直接在服务器之间复制文件。在获取时,我只需要定义source pathdestination path

这是示例

   - name:  Fetching a file from remote server
      fetch:
        src: "{{ DEST }}/Documents/Blockchain/network/scripts/file.pb"
        dest: /home/fetched/
        flat: yes // it will not create dir strcuture as same as source
        validate_checksum: false