#!/usr/bin/env python import os, sys, re STATUS = ["OK", "WARNING", "CRITICAL", "UNKNOWN"] status = "UNKNOWN" service = "DHCP" warn_level = .8 crit_level = .9 used = free = total = 0 used_percent = 1 check_cmd = r'/usr/bin/ssh %(server)s "netsh dhcp server show mibinfo"' % {"server": sys.argv[1]} subnet = sys.argv[2] ss = None for ll in os.popen3(check_cmd)[1].readlines(): rr = re.match(r"\s*Subnet = (?P[\d\.]+)\.", ll) if (rr): ss = rr.group("ss") if (ss != subnet): ss = None rr = re.match(r"\s*(?P[^=]+) = (?P[\d]+)", ll) if (ss and rr): if (rr.group("kk") == "No. of Addresses in use"): used = int(rr.group("vv")) if (rr.group("kk") == "No. of free Addresses"): free = int(rr.group("vv")) total = used + free if (total > 0): used_percent = float(used) / total detail = "%d of %d addresses in use; %d%% utilization" % (used, total, used_percent * 100) if (used_percent >= crit_level): status = "CRITICAL" elif (used_percent >= warn_level): status = "WARNING" elif (used_percent == 0): status = "UNKNOWN" else: status = "OK" print "%s %s: (%s) %s" % (service, status, subnet, detail) sys.exit(STATUS.index(status))