From 6132cdd87904980e63118690188f8c093f2764fd Mon Sep 17 00:00:00 2001 From: damage Date: Sat, 1 Nov 2025 12:57:32 +0100 Subject: [PATCH] configure multiple server in config.yml and set with --server --- README.md | 10 +++++++--- main.py | 19 ++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 30c3b78..82c97e8 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,13 @@ pip install zabbix_utils * configure Zabbix access in `config.yml` ``` zabbix: - api: - url: https://your.zabbix.example.com - token: abc123 + servers: + foo: + url: https://your.zabbix.example.com + token: abc123 + bar: + url: https://other.zabbix.example.com + token: cba321 ``` * user must have access to API `template.get` diff --git a/main.py b/main.py index 78bbd67..904349f 100755 --- a/main.py +++ b/main.py @@ -18,14 +18,14 @@ def get_raw_url(api_template): vendor = templates["vendors"][template["vendor"]] return f"\t{vendor['raw']}{template['path']}?{vendor['qry']}" -def get_api_templates(): - api = ZabbixAPI(url=config["zabbix"]["api"]["url"]) - api.login(token=config["zabbix"]["api"]["token"]) +def get_api_templates(server): + api = ZabbixAPI(url=config["zabbix"]["servers"][server]["url"]) + api.login(token=config["zabbix"]["servers"][server]["token"]) api_templates = api.template.get(selectHosts=["hostid", "name"], sortfield="name") return [t for t in api_templates if len(t["hosts"]) > 0] -def overview(): - api_templates = get_api_templates() +def overview(server): + api_templates = get_api_templates(server) for api_template in api_templates: print(api_template["name"]) print(f"\tVendor: {api_template['vendor_name']}") @@ -37,8 +37,8 @@ def overview(): if not api_template['uuid'] in templates["templates"]: print("\t!!! not found in templates.yml") -def check(): - api_templates = get_api_templates() +def check(server): + api_templates = get_api_templates(server) for api_template in api_templates: if api_template["uuid"] in templates["templates"]: raw_url = get_raw_url(api_template) @@ -57,12 +57,13 @@ def main(): args_parser = argparse.ArgumentParser() 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("--server", type=str, help="server to use from config.yml", required=True) args = args_parser.parse_args() if args.overview: - overview() + overview(args.server) elif args.check: - check() + check(args.server) if __name__ == "__main__": main() \ No newline at end of file