ansible - 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\""
有什么想法我在这里做错了吗?
解决方案
编辑:我有很多评论告诉我使用该expect
模块,但我不能使用 b/c 我不能总是依赖安装在目标主机上,如果它丢失了pexpect
我也无法安装。pexpect
我最终将密码保存到环境变量并将它们传送到密码重置命令中。
例如:
echo "$OLDPASS\n$NEWPASS\n$NEWPASS" | /my/app/bin/run.exe password
丑陋的解决方案,但它的工作原理。
推荐阅读
- python - 通过在 python 中使用部分匹配比较来自不同数据帧的 2 列来映射值
- kubernetes - Let's Encrypt 的主机名相同但路径不同
- java - Java 3级嵌套列表到3级嵌套映射
- matrix - 为什么我的矩阵在乘以 A *B 后显示随机数?
- swift - Flutter 中的 NS Notification Object (Swift) 有什么相似之处?
- django - 添加额外字段,允许用户选择额外字段的类型
- sql-server-2019 - 需要在 SQL Server 2019 中使用前一行值(向下填充)填充空单元格
- python - 在函数中的任何其他内容之前写入文件
- ads - 如何使用旧版本的 google AdWords API 而不是带有新开发者令牌的 Google Ads Api?
- android-auto - Android Auto“instrumentcluster”使用