import json import ssl import urllib.request ZABBIX_URL = "https://zabbix.snarfnet.net/api_jsonrpc.php" ZABBIX_USER = "Admin" ZABBIX_PASS = "zabbix" ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE def zbx_req(method: str, params: dict, auth: str = None): payload = {"jsonrpc": "2.0", "method": method, "params": params, "id": 1} headers = {"Content-Type": "application/json-rpc"} if auth: headers["Authorization"] = f"Bearer {auth}" req = urllib.request.Request(ZABBIX_URL, data=json.dumps(payload).encode("utf-8"), headers=headers, method="POST") with urllib.request.urlopen(req, timeout=10, context=ctx) as r: return json.loads(r.read().decode("utf-8"))["result"] token = zbx_req("user.login", {"username": ZABBIX_USER, "password": ZABBIX_PASS}) # Search for the trigger template trig = zbx_req("trigger.get", { "triggerids": "22372", "selectHosts": ["hostid", "host", "name"], }, auth=token) print("Trigger host/template:", trig) hostid = trig[0]["hosts"][0]["hostid"] macros = zbx_req("usermacro.get", { "hostids": hostid, }, auth=token) print(f"Macros for {hostid}:") for m in macros: print(f" {m['macro']} = {m['value']}")