-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright Hari Sekhon 2007
#
import os
import re
import sys
-from optparse import OptionParser
+import argparse
# Standard Nagios return codes
OK = 0
arg as the message to output"""
if status == OK:
- print "RAID OK: %s" % message
+ print("RAID OK: %s" % message)
sys.exit(OK)
elif status == WARNING:
- print "RAID WARNING: %s" % message
+ print("RAID WARNING: %s" % message)
sys.exit(WARNING)
elif status == CRITICAL:
- print "RAID CRITICAL: %s" % message
+ print("RAID CRITICAL: %s" % message)
sys.exit(CRITICAL)
else:
- print "UNKNOWN: %s" % message
+ print("UNKNOWN: %s" % message)
sys.exit(UNKNOWN)
them, or exits UNKNOWN if no MD arrays are found"""
if verbosity >= 3:
- print "finding all MD arrays via: %s --detail --scan" % BIN
+ print("finding all MD arrays via: %s --detail --scan" % BIN)
devices_output = os.popen("%s --detail --scan" % BIN).readlines()
raid_devices = []
for line in devices_output:
if "ARRAY" in line:
raid_device = line.split()[1]
if verbosity >= 2:
- print "found array %s" % raid_device
+ print("found array %s" % raid_device)
raid_devices.append(raid_device)
if len(raid_devices) == 0:
number_arrays = len(raid_devices)
for array in raid_devices:
if verbosity >= 2:
- print 'Now testing raid device "%s"' % array
+ print('Now testing raid device "%s"' % array)
detailed_output = os.popen("%s --detail %s" % (BIN, array) ).readlines()
if verbosity >= 3:
for line in detailed_output:
- print line,
+ print(line, end=' ')
state = "unknown"
for line in detailed_output:
def main():
"""parses args and calls func to test MD arrays"""
- parser = OptionParser()
+ parser = argparse.ArgumentParser()
- parser.add_option( "-v",
+ parser.add_argument("-v",
"--verbose",
action="count",
dest="verbosity",
+ default=0,
help="Verbose mode. Good for testing plugin. By default\
only one result line is printed as per Nagios standards")
- parser.add_option( "-V",
+ parser.add_argument("-V",
"--version",
action="store_true",
dest="version",
help="Print version number and exit")
- (options, args) = parser.parse_args()
+ args = parser.parse_args()
- if args:
- parser.print_help()
- sys.exit(UNKNOWN)
-
- verbosity = options.verbosity
- version = options.version
+ verbosity = args.verbosity
+ version = args.version
if version:
- print __version__
+ print(__version__)
sys.exit(OK)
result, message = test_raid(verbosity)
-#!/usr/bin/env python
+#!/usr/bin/env python3
# from https://gist.github.com/mzupan/2911557
-import urllib2
-import base64
+import requests
import sys
import optparse
check_url = "http://%s:%s/_status?format=xml" % (options.host, options.port)
-request = urllib2.Request(check_url)
-base64string = base64.encodestring('%s:%s' % (options.user, options.passwd)).replace('\n', '')
-request.add_header("Authorization", "Basic %s" % base64string)
+
try:
- result = urllib2.urlopen(request)
-except urllib2.HTTPError:
- print "Cannot connect to %s as user '%s'" % (check_url, options.user)
+ r = requests.get(check_url, auth=(options.user, options.passwd))
+ r.raise_for_status()
+except requests.exceptions.HTTPError:
+ print("Cannot connect to %s as user '%s'" % (check_url, options.user))
sys.exit(3)
-dom = parseString("".join(result.readlines()))
+dom = parseString(r.content)
monitored = []
unmonitored = []
exitcode = 0
monitored.append(name)
if len(unmonitored):
- print "monit: unmonitored services: %s" % (', '.join(unmonitored))
+ print("monit: unmonitored services: %s" % (', '.join(unmonitored)))
exitcode = 2
else:
- print "monit: no unmonitored services"
+ print("monit: no unmonitored services")
exitcode = 0
sys.exit(exitcode)