如何用jq命令格式化Check Point访问规则库输出并提取指定信息
提取Check Point访问规则库分组的规则范围
直接使用以下命令即可得到你需要的格式输出:
mgmt_cli -r true -d 192.168.86.201 show access-rulebase name Network --format json | jq -r ' .rulebase[] | select(.type == "access-section") | "\(.name) (\(if .from == .to then .from else "\(.from)-\(.to)" end))" '
命令逻辑说明
- 遍历规则库节点:
.rulebase[]遍历顶层的规则库数组,定位到所有规则分组和规则条目 - 筛选分组节点:
select(.type == "access-section")只保留类型为access-section的分组节点(这正是你需要按组提取的单元) - 格式化输出:
- 直接使用分组自带的
name作为标题 - 判断
from和to字段:如果两者相等(分组只有单条规则),则只显示该编号;否则显示起始-结束的范围 - 拼接成
分组名 (规则范围)的目标格式
- 直接使用分组自带的
之前命令的问题
你之前先提取了单个规则的name和rule-number,再用--slurp聚合,这种方式丢失了原始JSON中规则的分组结构,无法关联到每个分组的规则范围。而原始的access-section节点已经自带from和to标记了该分组的规则编号区间,直接利用这些字段就能高效得到结果。
内容的提问来源于stack exchange,提问作者DrGeek
相关产品推荐
相关产品推荐

