42 lines
1.4 KiB
Python
42 lines
1.4 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_token = zbx_call("user.login", {"username": ZABBIX_USER, "password": ZABBIX_PASS})
|
|
|
|
# Get host groups
|
|
groups = zbx_call("hostgroup.get", {"output": ["groupid", "name"]}, auth_token)
|
|
print("=== Host Groups ===")
|
|
for g in groups:
|
|
print(f"ID: {g['groupid']}, Name: {g['name']}")
|
|
|
|
# Get ICMP Ping template
|
|
templates = zbx_call("template.get", {
|
|
"output": ["templateid", "name"],
|
|
"filter": {"name": ["ICMP Ping", "Chassis by IPMI", "Dell iDRAC by SNMP", "Ubiquiti UniFi by SNMP"]}
|
|
}, auth_token)
|
|
print("\n=== Templates ===")
|
|
for t in templates:
|
|
print(f"ID: {t['templateid']}, Name: {t['name']}")
|
|
|