__author__ = "Zenon Mousmoulas" import os import sys import socket import traceback import urllib2 import cookielib import simplejson as json from optparse import OptionGroup from NagiosPlugin import NagiosPlugin from MultiPartForm import MultiPartForm # Setup plugin plugin = NagiosPlugin( version="1.0", usage="Usage: %prog -H <hostname> [-U <username>] -P <password> [options]", description="Nagios plugin for UBNT-M radios (over HTTP)") plugin.parser.get_option( "-w" ).help += "s (signal,signal chain0,signal chain1,noise,ccq,airmax quality,airmax capacity,tx rate,rx rate)" plugin.parser.get_option( "-c" ).help += "s (signal,signal chain0,signal chain1,noise,ccq,airmax quality,airmax capacity,tx rate,rx rate)" connGroup = OptionGroup(plugin.parser, "Connection options") connGroup.add_option( "-H", "--httphost", help= "HTTP(S) protocol, hostname, port (optional), as URL, e.g: http://example.com:port, https://example.com etc."
import urllib2 import cookielib if sys.version_info < (2, 6): import simplejson as json else: import json from optparse import OptionGroup from NagiosPlugin import NagiosPlugin from MultiPartForm import MultiPartForm from DictDotLookup import DictDotLookup # Setup plugin plugin = NagiosPlugin( version="1.0", usage="Usage: %prog -H <hostname> [-U <username>] -P <password> [options]", description="Nagios plugin for UBNT-AF24 radios (over HTTP)", ) plugin.parser.get_option( "-w" ).help += "s (airfiber.rxpower0,airfiber.rxpower1,airfiber.rxcapacity,airfiber.txcapacity,airfiber.txmodrate,wireless.distance,airfiber.dactemp0,airfiber.dactemp1,gps.dop_quality,gps.sats)" plugin.parser.get_option( "-c" ).help += "s (airfiber.rxpower0,airfiber.rxpower1,airfiber.rxcapacity,airfiber.txcapacity,airfiber.txmodrate,wireless.distance,airfiber.dactemp0,airfiber.dactemp1,gps.dop_quality,gps.sats)" boolGroup = OptionGroup(plugin.parser, "Boolean check options") boolGroup.add_option( "-b", "--boolean", help="Check that specific keys have particular values, otherwise the plugin returns CRITICAL (default: airfiber.rxpower0valid=1,airfiber.rxpower1valid=1,airfiber.rxoverload0=0,airfiber.rxoverload1=0,gps.status=1,gps.fix=1,airfiber.data_speed=1000Mbps-Full,airfiber.linkstate=operational)",
import socket import traceback import urllib2 import cookielib if sys.version_info < (2, 6): import simplejson as json else: import json from optparse import OptionGroup from NagiosPlugin import NagiosPlugin from MultiPartForm import MultiPartForm from DictDotLookup import DictDotLookup # Setup plugin plugin = NagiosPlugin( version="1.0", usage="Usage: %prog -H <hostname> [-U <username>] -P <password> [options]", description="Nagios plugin for UBNT-AF24 radios (over HTTP)") plugin.parser.get_option( "-w" ).help += "s (airfiber.rxpower0,airfiber.rxpower1,airfiber.rxcapacity,airfiber.txcapacity,airfiber.txmodrate,wireless.distance,airfiber.dactemp0,airfiber.dactemp1,gps.dop_quality,gps.sats)" plugin.parser.get_option( "-c" ).help += "s (airfiber.rxpower0,airfiber.rxpower1,airfiber.rxcapacity,airfiber.txcapacity,airfiber.txmodrate,wireless.distance,airfiber.dactemp0,airfiber.dactemp1,gps.dop_quality,gps.sats)" boolGroup = OptionGroup(plugin.parser, "Boolean check options") boolGroup.add_option( "-b", "--boolean", help= "Check that specific keys have particular values, otherwise the plugin returns CRITICAL (default: airfiber.rxpower0valid=1,airfiber.rxpower1valid=1,airfiber.rxoverload0=0,airfiber.rxoverload1=0,gps.status=1,gps.fix=1,airfiber.data_speed=1000Mbps-Full,airfiber.linkstate=operational)",
__version__ = "1.0" __author__ = "Zenon Mousmoulas" import os import sys import socket import traceback import urllib2 import cookielib import simplejson as json from optparse import OptionGroup from NagiosPlugin import NagiosPlugin from MultiPartForm import MultiPartForm # Setup plugin plugin = NagiosPlugin (version="1.0", usage="Usage: %prog -H <hostname> [-U <username>] -P <password> [options]", description="Nagios plugin for UBNT-M radios (over HTTP)") plugin.parser.get_option ("-w").help += "s (signal,signal chain0,signal chain1,noise,ccq,airmax quality,airmax capacity,tx rate,rx rate)" plugin.parser.get_option ("-c").help += "s (signal,signal chain0,signal chain1,noise,ccq,airmax quality,airmax capacity,tx rate,rx rate)" connGroup = OptionGroup (plugin.parser, "Connection options") connGroup.add_option ("-H", "--httphost", help="HTTP(S) protocol, hostname, port (optional), as URL, e.g: http://example.com:port, https://example.com etc.") plugin.parser.add_option_group (connGroup) authGroup = OptionGroup (plugin.parser, "Authentication options") authGroup.add_option ("-U", "--username", default="ubnt", help="username (default: 'ubnt')") authGroup.add_option ("-P", "--password", help="password") plugin.parser.add_option_group (authGroup) try: plugin.begin()
#!/usr/bin/env python """Example plugin for NagiosPlugin class.""" import sys from NagiosPlugin import NagiosPlugin n = NagiosPlugin("An example check") argparser = n.defaultArgs() try: args = argparser.parse_args(sys.argv[1:]) # Check something def checkSomething(): return 5 res = checkSomething() messages = { n.CRITICAL: "Something gone wild.", n.WARNING: "Something getting out of bounds.", n.OK: "Everything fine." } stat = n.CRITICAL * args.critical[0](res) stat = stat or n.WARNING * args.warning[0](res) out = n.format([(stat, messages[stat])]) except Exception as Err: out = n.format([(n.UNKNOWN, Err[-1])])