【问题标题】:Ansible expect module doesn't respond to password promptAnsible 期望模块不响应密码提示
【发布时间】:2016-09-14 07:48:16
【问题描述】:

我正在尝试使用 Ansible 为 openvpn 用户创建密码。我正在使用expect 模块,但它不起作用。

接下来是我要执行的任务。

- name: Crear contraseña
  expect:
    command: passwd openvpn
    responses:
      Question:
        - (?i)Introduzca la nueva contraseña de UNIX: "a1245"
        - (?i)Introduzca la nueva contraseña de UNIX: "a1245"

错误是下一个:

TASK [instalarVPN : Crear contraseña] ******************************************
fatal: [172.16.8.231]: FAILED! => {"changed": true, "cmd": "passwd openvpn", "delta": "0:00:30.108342", "end": "2016-09-14 10:13:07.370289", "failed": true, "rc": 10, "start": "2016-09-14 10:12:37.261947", "stdout": "Introduzca la nueva contraseña de UNIX: ", "stdout_lines": ["Introduzca la nueva contraseña de UNIX: "]}

如果我使用:

- name: Crear contraseña
  expect:
    command: passwd openvpn
    responses:
      (?i)Introduzca la nueva contraseña de UNIX: "a1245"
      (?i)Introduzca la nueva contraseña de UNIX: "a1245"

我有下一个错误:

fatal: [172.16.8.231]: FAILED! => {"changed": false, "failed": true, "module_stderr": "", "module_stdout": "\r\nTraceback (most recent call last):\r\n  File \"/tmp/ansible_98VaZx/ansible_module_expect.py\", line 230, in <module>\r\n    main()\r\n  File \"/tmp/ansible_98VaZx/ansible_module_expect.py\", line 151, in main\r\n    events[key.decode()] = response\r\nUnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 32: ordinal not in range(128)\r\n", "msg": "MODULE FAILURE", "parsed": false}

【问题讨论】:

    标签: ansible expect ansible-playbook pexpect ansible-2.x


    【解决方案1】:

    以下是多个提示和答案的语法:

    - name: Crear contraseña
      expect:
        command: passwd openvpn
        responses:
          (?i)Enter new password: "a1245"
          (?i)Enter new password: "a1245"
    

    注意:ñ 是 Unicode 字符,因此可能需要引用,或者您可以将语言更改为英语。

    您需要 Ansible 2.1 - 根据 expect 模块文档中的 responses 参数描述:

    如果响应是一个列表,则连续匹配会返回连续响应。列表功能是 2.1 中的新功能。


    也就是说,使用expect 模块来完成您可以使用user 模块“本机”实现的事情有点麻烦。

    【讨论】:

    • 我已经编辑了问题,当我使用你回答我的任务时出现错误,请在问题中检查。是的,我有 ansible 2.1.0.0
    • Okey 它工作正常,我已将系统语言更改为英语,问题是您所说的“ñ”无法解码。您可以编辑答案并让我接受吗?
    • 是的,我用英语测试了它并输入了你的字符串,因为我不会说西班牙语。会更新,但字符串在 Linux 上不同,在 OS X 上不同,所以...
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多