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

Ansible配合loop使用register时如何提取返回结果中的stdout字段?

Ansible loop + register 场景提取stdout输出方案

output.results是列表类型,列表内的每个元素对应单次循环任务的返回结果,包含stdout、stdout_lines、item等属性,直接对整个列表调用stdout属性不会生效。

方法1:循环遍历输出每个命令的执行结果

遍历output.results列表,逐个读取每个元素的stdout属性:

- debug:
    msg: "命令 {{ item.item }} 执行输出:{{ item.stdout }}"
  loop: "{{ output.results }}"

如果需要提取多行输出的stdout_lines,替换item.stdout为item.stdout_lines即可。

方法2:批量提取所有命令的stdout为列表

使用Jinja2的map过滤器一次性提取所有结果的stdout属性,返回列表格式:

# 提取所有stdout
- debug:
    msg: "{{ output.results | map(attribute='stdout') | list }}"

# 提取所有stdout_lines
- debug:
    msg: "{{ output.results | map(attribute='stdout_lines') | list }}"

可选:过滤特定命令的输出

如果需要获取指定命令的执行结果,可以搭配selectattr过滤器筛选:

# 仅提取date命令的stdout输出
- debug:
    msg: "{{ output.results | selectattr('item', 'equalto', 'date') | map(attribute='stdout') | first }}"

内容的提问来源于stack exchange,提问作者opensource engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 10:18:02