Ansible Raw模块-如何处理SFTP / SCP上的密码提示?

时间:2019-04-25 00:10:42

标签: ansible sftp scp junos-automation

要使ansible剧本在目标 Junos 机器上的文件上复制,我需要 raw 模块和 sftp / scp 才能使用

目标机器(Junos)没有python ,因此,我仅在侧面使用 raw 模块来运行命令。而且我一直在尝试 sftp / scp 都要求在提示符下输入 password ,但是不能使用 raw 模块使它正常工作。

如果复制命令可以单行完成,那也可以,但是目标计算机也没有 sshpass 。因此,我希望能找到任何解决方法,以便可以从ansible剧本的 raw 模块的提示中提供 password

这是来自Junos的,在提示时提供密码后,sftp可以正常工作。

root@:~ # sftp <username>@host:/file/location/file destFile
<username>@host's password:

该剧本具有与 raw 相同的命令,但即使对 raw < / strong>使用(; / &&)。

     - name: "Copy config file on Junos"
#       raw: sftp <username>@host:/file/location/file destFile && <password>
#       raw: sftp <username>@host:/file/location/file destFile;<password>
       raw: sftp <username>@host:/file/location/file destFile
       register: disp
     - name: "Print disp"
       debug:
         var: disp 

简而言之,我该如何使用ansible的 raw 模块进行操作,以允许在提示中提供密码

2 个答案:

答案 0 :(得分:0)

尝试使用expect和“ delegate_to:主机”。使“ 响应”适合您的需求。

- name: Copy config file on Junos
  expect:
    command: scp  destFile username@junos:/file/location/file
    responses:
      (?i)username@junos's password: "MySekretPa$$word"
  delegate_to: host

答案 1 :(得分:0)

似乎没有使用原始模块处理密码提示的示例。

因此,决定使用不同的方式来完成整个操作,即使用 expect 将文件从可移植主机复制到 junos 。以下是有效的 .yml

- hosts: 127.0.0.1
  connection: local
  gather_facts: no
  tasks:
    - name: Copy config file on Junos
      expect:
        command: scp srcFile <user>@junos:/dest/file/
        responses:
          (.*)Password: "<password>"
      delegate_to: localhost