configure multiple server in config.yml and set with --server

This commit is contained in:
2025-11-01 12:57:32 +01:00
parent 75eb3fc11a
commit 6132cdd879
2 changed files with 17 additions and 12 deletions

View File

@@ -13,9 +13,13 @@ pip install zabbix_utils
* configure Zabbix access in `config.yml` * configure Zabbix access in `config.yml`
``` ```
zabbix: zabbix:
api: servers:
foo:
url: https://your.zabbix.example.com url: https://your.zabbix.example.com
token: abc123 token: abc123
bar:
url: https://other.zabbix.example.com
token: cba321
``` ```
* user must have access to API `template.get` * user must have access to API `template.get`

19
main.py
View File

@@ -18,14 +18,14 @@ def get_raw_url(api_template):
vendor = templates["vendors"][template["vendor"]] vendor = templates["vendors"][template["vendor"]]
return f"\t{vendor['raw']}{template['path']}?{vendor['qry']}" return f"\t{vendor['raw']}{template['path']}?{vendor['qry']}"
def get_api_templates(): def get_api_templates(server):
api = ZabbixAPI(url=config["zabbix"]["api"]["url"]) api = ZabbixAPI(url=config["zabbix"]["servers"][server]["url"])
api.login(token=config["zabbix"]["api"]["token"]) api.login(token=config["zabbix"]["servers"][server]["token"])
api_templates = api.template.get(selectHosts=["hostid", "name"], sortfield="name") api_templates = api.template.get(selectHosts=["hostid", "name"], sortfield="name")
return [t for t in api_templates if len(t["hosts"]) > 0] return [t for t in api_templates if len(t["hosts"]) > 0]
def overview(): def overview(server):
api_templates = get_api_templates() api_templates = get_api_templates(server)
for api_template in api_templates: for api_template in api_templates:
print(api_template["name"]) print(api_template["name"])
print(f"\tVendor: {api_template['vendor_name']}") print(f"\tVendor: {api_template['vendor_name']}")
@@ -37,8 +37,8 @@ def overview():
if not api_template['uuid'] in templates["templates"]: if not api_template['uuid'] in templates["templates"]:
print("\t!!! not found in templates.yml") print("\t!!! not found in templates.yml")
def check(): def check(server):
api_templates = get_api_templates() api_templates = get_api_templates(server)
for api_template in api_templates: for api_template in api_templates:
if api_template["uuid"] in templates["templates"]: if api_template["uuid"] in templates["templates"]:
raw_url = get_raw_url(api_template) raw_url = get_raw_url(api_template)
@@ -57,12 +57,13 @@ def main():
args_parser = argparse.ArgumentParser() args_parser = argparse.ArgumentParser()
args_parser.add_argument("--overview", action="store_true", help="show overview of used templates") args_parser.add_argument("--overview", action="store_true", help="show overview of used templates")
args_parser.add_argument("--check", action="store_true", help="check known templates for updates") args_parser.add_argument("--check", action="store_true", help="check known templates for updates")
args_parser.add_argument("--server", type=str, help="server to use from config.yml", required=True)
args = args_parser.parse_args() args = args_parser.parse_args()
if args.overview: if args.overview:
overview() overview(args.server)
elif args.check: elif args.check:
check() check(args.server)
if __name__ == "__main__": if __name__ == "__main__":
main() main()