我正在使用 Delinea adedit 命令 (https://docs.delinea.com/online-help/server-suite/dev/adedit/commands.htm)。 在 Linux CLI 中发出 adedit 命令后,会看到 > 提示符,我连续输入以下命令:
>bind acme.com administrator password123
>package require ade_lib
>add_user_to_group ...
>quit
仅供参考,password123 是一个假密码。
我正在尝试使用 Expect 命令在 Ansible 中进行编码,如下所示:
- name: Delinea adedit generic prompt with multiple different responses
ansible.builtin.expect:
command: adedit
responses:
">":
- bind "{{domain_name}} {{ lookup('aws_ssm', '/ansible/windows/username', region='us-east-1') }} {{ lookup('aws_ssm', '/ansible/windows/password', region='us-east-1') }}"
- package require ade_lib
- add_user_to_group "{{instance_name}}$@{{domain_name}} \"CN=SG-CFY-Delinea MFA Servers,OU=Computer Roles,OU=Centrify,DC=acme,DC=local\""
- quit
我在 Ansible 中得到了这样的回复:
changed: [SERVER01] => {"changed": true, "cmd": "adedit", "delta": "0:00:00.193347", "end": "2024-09-11 14:49:15.510734", "rc": 0, "start": "2024-09-11 14:49:15.317387", "stdout": "No entry for terminal type \"unknown\";\r\nusing dumb terminal settings.\r\n>bind \"acme.local administrator password123\"", "stdout_lines": ["No entry for terminal type \"unknown\";", "using dumb terminal settings.", ">bind \"acme.local administrator password123\""]}
看起来这四个命令并不是连续发出的。 我的 Ansible 代码中有什么不正确的地方?
看起来你可以做这样的事情,而不是使用类似
expect
的解决方案:
- name: Delinea adedit generic prompt with multiple different responses
ansible.builtin.command:
cmd: adedit
stdin: |
bind "{{domain_name}} {{ lookup('aws_ssm', '/ansible/windows/username', region='us-east-1') }} {{ lookup('aws_ssm', '/ansible/windows/password', region='us-east-1') }}"
package require ade_lib
add_user_to_group "{{instance_name}}$@{{domain_name}} \"CN=SG-CFY-Delinea MFA Servers,OU=Computer Roles,OU=Centrify,DC=acme,DC=local\""
quit
我没有任何方法来测试这一点,但通读文档,这看起来是有可能的。