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

如何将Ansible即席命令的输出转为JSON、CSV等格式?

嗨,我来给你梳理几种把Ansible ad-hoc命令输出转成JSON、CSV等常用格式的实用方法,都是日常运维里高频用到的技巧:

1. 直接输出为JSON格式

Ansible本身就支持原生JSON输出,这是最省心的方式。你只需要在ad-hoc命令末尾加上--format json参数(也可以简写为-f json),就能直接得到标准的JSON结构输出。

举个例子,获取所有主机的ping结果并保存为JSON:

ansible all -m ping --format json > ping_results.json

如果是执行shell命令,比如查看所有web服务器的uptime:

ansible web_servers -m shell -a 'uptime' --format json > web_uptime.json

这种方式输出的JSON可以直接被其他工具(比如jq、Python脚本)解析,非常适合自动化流程。

2. 转换为CSV格式

CSV格式适合做报表或者导入Excel,通常需要先把ad-hoc输出转成JSON,再用jq工具提取字段生成CSV。

示例1:导出主机名和IP地址

先获取包含主机信息的JSON:

ansible all -m setup -a 'filter=ansible_hostname,ansible_default_ipv4.address' --format json > host_details.json

然后用jq解析并生成CSV:

jq -r 'to_entries[] | [.key, .value.ansible_facts.ansible_hostname, .value.ansible_facts.ansible_default_ipv4.address] | @csv' host_details.json > host_details.csv

解释下这个jq命令:

  • to_entries[]把JSON对象转成键值对数组,每个键就是主机名
  • [.key, ...]提取我们需要的字段(主机名、hostname、IP)
  • @csv把数组转换成CSV格式,-r确保输出是原始字符串(不带多余引号)

示例2:导出磁盘使用率

如果是shell命令的输出,比如查看根目录磁盘使用:

ansible all -m shell -a 'df -P / | awk '\''NR==2 {print $5}'\''' --format json > disk_usage.json

再转成CSV:

jq -r 'to_entries[] | [.key, .value.stdout] | @csv' disk_usage.json > disk_usage.csv
3. 输出为YAML格式

YAML比JSON更易读,适合用来保存配置类的输出,同样用--format参数指定:

ansible all -m setup -a 'filter=ansible_distribution*' --format yaml > os_details.yaml

输出的YAML结构清晰,手动查看或者导入配置管理工具都很方便。

4. 自定义格式(表格/纯文本)

如果需要更灵活的格式,可以用awk、sed这类工具直接处理Ansible的默认人类可读输出。比如从uptime结果中提取主机和负载平均值:

ansible all -m shell -a 'uptime' | awk '/SUCCESS/{host=$1} /load average/{print host "," substr($10, 1, length($10)-1)}' > load_avg.csv

这个命令会过滤出主机名和负载值,生成简洁的CSV。

一些小提示

  • 建议安装jq工具(大多数Linux发行版都能通过包管理器安装,比如apt install jq),处理JSON效率极高
  • 执行shell命令时,尽量用POSIX兼容的参数(比如df -P),避免不同系统输出格式不一致导致解析失败
  • 如果需要复杂的转换逻辑,也可以把JSON输出导入Python脚本,用json模块解析后生成你需要的任何格式

内容的提问来源于stack exchange,提问作者Rajesh Yidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:12:36