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

如何使用jq解析ansible -m setup输出并去除非JSON前缀内容

Ansible setup输出去除非JSON前缀的解决方案

要解析ansible -m setup的输出,可选择以下任意一种方法去除前缀内容:

方案1:使用Ansible原生JSON输出回调(推荐)

运行命令时指定标准输出回调插件为json,Ansible会直接输出完整纯JSON结构,没有任何主机状态前缀,可直接对接jq处理:

ANSIBLE_STDOUT_CALLBACK=json ansible 目标主机组/IP -m setup | jq '.'

如果需要提取特定字段,比如获取所有主机的操作系统版本,可调整jq过滤规则:

ANSIBLE_STDOUT_CALLBACK=json ansible all -m setup | jq '.plays[].tasks[].hosts[].ansible_facts.ansible_distribution_version'

方案2:用sed预处理删除前缀

适合旧版本Ansible,无需调整输出配置,直接用sed删除=>符号之前的所有内容,剩余部分就是纯JSON:

ansible all -m setup | sed 's/^.*=> //' | jq '.'

方案3:用jq原生能力跳过非JSON内容

无需额外工具,利用jq的原始输入模式和容错解析能力,自动跳过无法解析为JSON的前缀内容,直接提取有效JSON:

ansible all -m setup | jq -R 'fromjson?'

内容的提问来源于stack exchange,提问作者Red Cricket

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:00