40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
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})
|
|
|
|
macros = zbx_req("usermacro.get", {
|
|
"hostids": "10343",
|
|
}, auth=token)
|
|
print(f"Macros on Template 10343:")
|
|
for m in macros:
|
|
if "FUZZY" in m["macro"] or "TIME" in m["macro"]:
|
|
print(f" {m['hostmacroid']}: {m['macro']} = {m['value']}")
|
|
|
|
trigs = zbx_req("trigger.get", {
|
|
"templateids": "10343",
|
|
"search": {"description": "time"},
|
|
"output": ["triggerid", "description", "expression", "priority"]
|
|
}, auth=token)
|
|
print(f"Triggers on Template 10343:")
|
|
for t in trigs:
|
|
print(f" {t['triggerid']}: {t['description']} [prio={t['priority']}] -> {t['expression']}")
|
|
|