+++ /dev/null
-#!/usr/bin/python
-
-import time
-import sys
-import os
-
-from monitor.wrapper import plc
-
-def argv_to_dict(argv):
- """
- NOTE: very bare-bones, no error checking, will fail easily.
- """
- d = {}
- prev=None
- for a in argv:
- if "--" == a[0:2]:
- prev = a[2:]
- elif "-" == a[0:1]:
- prev = a[1:]
- else:
- d[prev] = a
- return d
-
-def main():
- d = argv_to_dict(sys.argv[1:])
-
- api = plc.api
- if 'hostname' in d or 'H' in d:
- try:
- hostname = d['host']
- except:
- hostname = d['H']
- else:
- print "UNKNOWN: argument error"
- sys.exit(3)
-
- try:
- n = api.GetNodes(hostname)[0]
- except:
- print "UNKNOWN: API failure"
- sys.exit(3)
-
- if n['last_contact']:
- t1 = n['last_contact']
- else:
- t1 = 0
- t2 = time.time()
- #print n['boot_state'], n['run_level'], t1, t2, t2-t1
-
- if t2-t1 < 60*60*30:
- if n['boot_state'] == n['run_level']:
- print "OK: bootstate matches runlevel and lastcontact is up to date"
- sys.exit(0)
- else:
- print "WARNING: bootstate does not match runlevel"
- sys.exit(1)
- else:
- print "CRITICAL: node last_contact is stale, assumed offline"
- sys.exit(2)
-
-
-if __name__ == '__main__':
- f = open("/tmp/checkmode", 'a')
- f.write("checkmode %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
- f.close()
- main()