它仍然适用于在 RedHat7 上使用 pexpect 还是有其他方法来执行命令并响应提示?
Is it still applicable to use pexpect on RedHat7 or is there alternative way to Executes a command and responds to prompts?
我正在尝试在 Redhat7 中使用 pexpect for ansible,但我无法安装它。我只得到 pexpect.noarch 2.3-11.el7 @RHEL7 版本。或者是否有替代方案可以执行命令并响应提示?
看起来 RHEL7 附带的 pexpect
Python 模块的版本对于 Ansible 来说太旧了(RHEL7 预期为 2.3,而 Ansible 需要 3.3 或更高版本)。您最好的选择可能是使用 shell
或 command
模块来 运行 expect
;在 documentation for the shell
module:
中有一个这样的例子
# You can use shell to run other executables to perform actions inline
- name: Run expect to wait for a successful PXE boot via out-of-band CIMC
shell: |
set timeout 300
spawn ssh admin@{{ cimc_host }}
expect "password:"
send "{{ cimc_password }}\n"
expect "\n{{ cimc_name }}"
send "connect host\n"
expect "pxeboot.n12"
send "\n"
exit 0
args:
executable: /usr/bin/expect
delegate_to: localhost
我正在尝试在 Redhat7 中使用 pexpect for ansible,但我无法安装它。我只得到 pexpect.noarch 2.3-11.el7 @RHEL7 版本。或者是否有替代方案可以执行命令并响应提示?
看起来 RHEL7 附带的 pexpect
Python 模块的版本对于 Ansible 来说太旧了(RHEL7 预期为 2.3,而 Ansible 需要 3.3 或更高版本)。您最好的选择可能是使用 shell
或 command
模块来 运行 expect
;在 documentation for the shell
module:
# You can use shell to run other executables to perform actions inline
- name: Run expect to wait for a successful PXE boot via out-of-band CIMC
shell: |
set timeout 300
spawn ssh admin@{{ cimc_host }}
expect "password:"
send "{{ cimc_password }}\n"
expect "\n{{ cimc_name }}"
send "connect host\n"
expect "pxeboot.n12"
send "\n"
exit 0
args:
executable: /usr/bin/expect
delegate_to: localhost