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

如何通过Python脚本提取Zabbix API返回结果中parent标签的值?

提取Zabbix主机tags中parent对应的value值

要解决这个问题,核心是确保API请求能拿到完整的tags数据,再通过遍历或简洁写法筛选目标tag的value。以下是具体实现方法:

关键前提

调用host.get接口时,必须在请求参数中添加"selectTags": "extend",否则返回结果不会包含tags数组,这是最容易遗漏的步骤。

完整代码示例

import requests

# Zabbix API配置
ZABBIX_URL = "http://your-zabbix-server/api_jsonrpc.php"
USERNAME = "your-username"
PASSWORD = "your-password"

# 获取认证token
def get_zabbix_token():
    payload = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {"user": USERNAME, "password": PASSWORD},
        "id": 1
    }
    response = requests.post(ZABBIX_URL, json=payload)
    return response.json()["result"]

# 查询主机信息(包含tags)
def fetch_hosts():
    token = get_zabbix_token()
    payload = {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": ["host", "description"],
            "selectTags": "extend"  # 必须添加这个参数才能获取tags
        },
        "auth": token,
        "id": 2
    }
    response = requests.post(ZABBIX_URL, json=payload)
    return response.json()["result"]

# 处理并输出结果
host_list = fetch_hosts()
for host in host_list:
    # 提取基础字段
    host_name = host["host"]
    desc = host.get("description", "")
    
    # 提取parent tag的value(两种写法可选)
    # 写法1:遍历筛选
    parent = "N/A"
    for tag in host.get("tags", []):
        if tag.get("tag") == "parent":
            parent = tag.get("value")
            break
    
    # 写法2:用next函数简化(推荐)
    # parent = next((t["value"] for t in host.get("tags", []) if t["tag"] == "parent"), "N/A")
    
    # 输出指定格式
    output = {
        "Host Name": host_name,
        "Description": desc,
        "Parent": parent
    }
    print(output)

核心逻辑说明

  • 获取tags数据:selectTags: extend是必须参数,它会让Zabbix API返回主机的完整标签数组,否则tags字段不会出现在响应中。
  • 筛选parent标签:
    • 遍历写法:逐个检查tags中的每个元素,匹配到tag为parent的项后提取value,找到即停止遍历。
    • next函数写法:通过生成器表达式快速筛选,找不到匹配项时返回默认值"N/A",代码更简洁。
  • 健壮性处理:使用host.get("tags", [])避免主机无标签时触发KeyError,用tag.get("tag")避免标签格式异常的情况。

内容的提问来源于stack exchange,提问作者Fernando Iñiguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:17:04