You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:22:00