feat: add infrastructure automation scripts and master improvement plan
This commit is contained in:
32
scripts/check_zabbix_global_macros.py
Normal file
32
scripts/check_zabbix_global_macros.py
Normal file
@@ -0,0 +1,32 @@
|
||||
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})
|
||||
|
||||
g_macros = zbx_req("usermacro.get", {"globalmacro": True}, auth=token)
|
||||
for m in g_macros:
|
||||
if "FUZZY" in m["macro"] or "TIME" in m["macro"]:
|
||||
print(f"Global macro: {m['macro']} = {m['value']}")
|
||||
|
||||
# Check if {$SYSTEM.FUZZYTIME.MAX} is set globally
|
||||
print("All global macros containing FUZZY or TIME:")
|
||||
fuzzy = [m for m in g_macros if "FUZZY" in m["macro"]]
|
||||
print(fuzzy)
|
||||
|
||||
Reference in New Issue
Block a user