Files
SnarfCode/scripts/get_zabbix_metadata.py

37 lines
1.3 KiB
Python

import json
import ssl
import urllib.request
ZABBIX_URL = "http://140.44.4.60:8888/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_call(method, params, auth=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:
resp = json.loads(r.read().decode("utf-8"))
if "error" in resp:
raise RuntimeError(f"Zabbix error in {method}: {resp['error']}")
return resp["result"]
auth = zbx_call("user.login", {"username": ZABBIX_USER, "password": ZABBIX_PASS})
groups = zbx_call("hostgroup.get", {"output": ["groupid", "name"]}, auth)
print("=== Host Groups ===")
for g in groups:
print(f" {g['groupid']}: {g['name']}")
templates = zbx_call("template.get", {"output": ["templateid", "name"], "search": {"name": "Ping"}}, auth)
print("\n=== Ping Templates ===")
for t in templates:
print(f" {t['templateid']}: {t['name']}")