From 4d546361b180f165d72fcef1fb67e05bba02b842 Mon Sep 17 00:00:00 2001 From: Javier Barroso Date: Tue, 19 Dec 2017 17:30:40 +0100 Subject: [PATCH 1/2] Added configuration file zabbix_api will search at /etc/zabbix/zabbix_api.conf and at ~/.zabbix_api.conf The syntax is a ini file: [zabbixapi] user=xxx password=yyyy proto=https server=zzz --- zabbix/zabbix_api.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/zabbix/zabbix_api.py b/zabbix/zabbix_api.py index fbdb2bc..72ad5e8 100644 --- a/zabbix/zabbix_api.py +++ b/zabbix/zabbix_api.py @@ -27,8 +27,10 @@ # broken. This is a work in progress. import base64 +import ConfigParser import hashlib import logging +import os import string import sys import ssl @@ -134,6 +136,11 @@ class ZabbixAPI(object): def __init__(self, server='http://localhost/zabbix', user=httpuser, passwd=httppasswd, log_level=logging.WARNING, timeout=10, r_query_len=10, validate_certs=True, **kwargs): + config=self.read_config() + if config.get('zabbixapi','proto'): + self.proto=config.get('zabbixapi','proto') + if config.get('zabbixapi','server'): + server=self.proto+"://"+config.get('zabbixapi','server')+"/zabbix" """ Create an API object. """ self._setuplogging() self.set_log_level(log_level) @@ -184,8 +191,14 @@ def json_obj(self, method, params={}, auth=True): self.debug(logging.DEBUG, "json_obj: " + str(obj)) return json.dumps(obj) - + def read_config(self): + config_files=['/etc/zabbix/zabbix_api.conf', + os.path.expanduser('~/.zabbix_api.conf')] + config=ConfigParser.ConfigParser() + config.read(config_files) + return config def login(self, user='', password='', save=True): + config=self.read_config() if user != '': l_user = user l_password = password @@ -196,6 +209,9 @@ def login(self, user='', password='', save=True): elif self.__username__ != '': l_user = self.__username__ l_password = self.__password__ + elif config: + l_user = config.get('zabbixapi','user') + l_password = config.get('zabbixapi','password') else: raise ZabbixAPIException("No authentication information available.") From fa53d36c5e367e012b2a0327e2c8c509736beadd Mon Sep 17 00:00:00 2001 From: i5513 Date: Tue, 19 Dec 2017 17:40:08 +0100 Subject: [PATCH 2/2] Cosmetic changes --- zabbix/zabbix_api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zabbix/zabbix_api.py b/zabbix/zabbix_api.py index 72ad5e8..c480162 100644 --- a/zabbix/zabbix_api.py +++ b/zabbix/zabbix_api.py @@ -191,12 +191,14 @@ def json_obj(self, method, params={}, auth=True): self.debug(logging.DEBUG, "json_obj: " + str(obj)) return json.dumps(obj) + def read_config(self): config_files=['/etc/zabbix/zabbix_api.conf', os.path.expanduser('~/.zabbix_api.conf')] config=ConfigParser.ConfigParser() config.read(config_files) return config + def login(self, user='', password='', save=True): config=self.read_config() if user != '':