From: Sven Velt Date: Wed, 22 Dec 2010 14:48:43 +0000 (+0100) Subject: Add "command_prefix" to conf files X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=8887856ef2ce471b678419033f717750ee3494a6;p=nagixsc.git Add "command_prefix" to conf files Either use "command_prefix" in [nagixsc] for all service checks in this conf file or use "_command_prefix" per host/sections. Last overwrites the first. Signed-off-by: Sven Velt --- diff --git a/nagixsc/__init__.py b/nagixsc/__init__.py index 19ef416..827a104 100644 --- a/nagixsc/__init__.py +++ b/nagixsc/__init__.py @@ -70,7 +70,7 @@ def read_inifile(inifile): def exec_timeout_handler(signum, frame): raise ExecTimeoutError -def exec_check(host_name, service_descr, cmdline, timeout=None, timeout_returncode=2): +def exec_check(host_name, service_descr, cmdline, cmdprefix='', timeout=None, timeout_returncode=2): cmdarray = shlex.split(cmdline) check = {} @@ -85,6 +85,12 @@ def exec_check(host_name, service_descr, cmdline, timeout=None, timeout_returnco check['commandline'] = cmdline check['command'] = cmdarray[0].split(os.path.sep)[-1] + if cmdprefix: + check['fullcommandline'] = cmdprefix + ' ' + cmdline + cmdarray = shlex.split(cmdprefix) + cmdarray + else: + check['fullcommandline'] = cmdline + if timeout: signal.signal(signal.SIGALRM, exec_timeout_handler) signal.alarm(timeout) @@ -137,6 +143,12 @@ def conf2dict(config, opt_host=None, opt_service=None): except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): add_pnp4nagios_template_hint = False + # Read "command_prefix" from "[nagixsc]", default "" (empty string) + try: + cmdprefix_conffile = config.get('nagixsc','command_prefix') + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): + cmdprefix_conffile = '' + # Sections are Hosts (not 'nagixsc'), options in sections are Services hosts = config.sections() if 'nagixsc' in hosts: @@ -158,10 +170,16 @@ def conf2dict(config, opt_host=None, opt_service=None): services = config.options(host) + # Look for host/section specific "command_prefix" + if '_command_prefix' in services: + cmdprefix = config.get(host, '_command_prefix') + else: + cmdprefix = cmdprefix_conffile + # Look for host check if '_host_check' in services and not opt_service: cmdline = config.get(host, '_host_check') - check = exec_check(host_name, None, cmdline, timeout, timeout_returncode) + check = exec_check(host_name, None, cmdline, cmdprefix, timeout, timeout_returncode) if add_pnp4nagios_template_hint and '|' in check['output']: check['output'] += ' [%s]' % check['command'] checks.append(check) @@ -179,7 +197,7 @@ def conf2dict(config, opt_host=None, opt_service=None): if service[0] != '_': cmdline = config.get(host, service) - check = exec_check(host_name, service, cmdline, timeout, timeout_returncode) + check = exec_check(host_name, service, cmdline, cmdprefix, timeout, timeout_returncode) if add_pnp4nagios_template_hint and '|' in check['output']: check['output'] += ' [%s]' % check['command'] checks.append(check)