Ansible剧本调用需回车脚本遇pexpect兼容问题,求替代方案
无需pexpect的Ansible输入处理方案
以下是几种不用依赖pexpect库的方法,解决脚本需要按回车继续的问题:
自动模拟回车输入
用shell模块配合管道或here-string直接传入换行符,模拟用户按回车的操作:- name: 自动执行pre-requirements.sh(模拟回车) shell: echo -e "\n" | ./pre-requirements.sh args: chdir: /path/to/your/script或者用bash的here-string写法,更简洁:
- name: 自动执行pre-requirements.sh(here-string版本) shell: ./pre-requirements.sh <<< $'\n' args: chdir: /path/to/your/script如果脚本需要多次回车,就多添加几个
\n,比如echo -e "\n\n"。人工确认后执行
如果需要真人手动确认再继续,用Ansible自带的pause模块先暂停,等用户按回车后再执行脚本:- name: 等待用户确认 pause: prompt: "请按回车开始执行pre-requirements.sh" - name: 执行预检查脚本 shell: ./pre-requirements.sh args: chdir: /path/to/your/script修改脚本自动跳过等待(可选)
如果你有权限修改pre-requirements.sh,直接把等待回车的语句改成自动跳过:
比如把原脚本里的read -p "按回车继续..."改成:# 1秒超时自动继续,无需用户输入 read -t 1 -p "按回车继续..."或者直接删除这条read语句,这样脚本运行时就不会卡住等待输入了。
内容的提问来源于stack exchange,提问作者blue
相关产品推荐
相关产品推荐

