首页 > 解决方案 > Ansible如何使用expect回答密码重置提示?

问题描述

我在使用 expect 来响应剧本中的密码更改提示时遇到了问题。我不确定我的实际问题是否与期望或采购 env 文件有关

- name: Change user password post install
  shell:
    cmd: |
      source /my/path/to/env_vars env_name
      /my/app/bin/run.exe password
      
      expect "Enter new password:"
      send my_new_password

      expect "Re-enter new password:"
      send my_new_password
  args:
    executable: /usr/bin/expect

我收到的错误与 env_vars 文件的来源有关,但我在其他地方使用此模式而没有问题。除了可能设置 /usr/bin/expect 参数之外,我不确定是什么导致了这种情况。

我收到的错误是:

wrong # args: should be \"source ?-encoding name?> fileName\"\n   while executing\n\"source /my/path/to/env_vars env_name\""

有什么想法我在这里做错了吗?

标签: ansible

解决方案


编辑:我有很多评论告诉我使用该expect模块,但我不能使用 b/c 我不能总是依赖安装在目标主机上,如果它丢失了pexpect我也无法安装。pexpect

我最终将密码保存到环境变量并将它们传送到密码重置命令中。

例如:

echo "$OLDPASS\n$NEWPASS\n$NEWPASS" | /my/app/bin/run.exe password

丑陋的解决方案,但它的工作原理。


推荐阅读