如何使用Ansible Expect模块执行多条命令?报错求助
Ansible Expect模块执行多条命令的正确方式
你的错误根源是Expect模块的command参数不支持列表格式,它只能接收单个命令字符串。你把命令写成列表后,Ansible会把第一个元素date;当作独立命令去查找,系统自然找不到带分号的date;命令,这就是报错的原因。
修正后的Playbook写法如下:
- name: setup tech expect: command: bash -c "date; time /run/app.run" responses: 'update': 'yes'
关键说明:
- 用
bash -c(或sh -c,根据目标系统默认shell调整)包裹多条命令,让shell解析执行整个命令字符串里的连续指令 - 确保
/run/app.run拥有可执行权限(可提前用file模块设置mode: +x) - 如果
time是shell内置命令(比如bash的内置命令),必须通过shell进程执行,直接单独调用会找不到命令,这也是用shell包裹的必要性之一
内容的提问来源于stack exchange,提问作者ls440
相关产品推荐
相关产品推荐

