+#!/usr/bin/python
+
+import os
+import time
+import sys
+import auth
+
+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:])
+
+ if 'pattern' in d or 'p' in d:
+ try:
+ pattern = d['pattern']
+ except:
+ pattern = d['p']
+ else:
+ print "UNKNOWN: Argument error"
+ sys.exit(3)
+
+
+ # TODO: check that RT is configured correctly
+ os.environ["RTSERVER"] = auth.RTSERVER
+ os.environ["RTUSER"] = auth.RTUSER
+ os.environ["RTPASSWD"] = auth.RTPASSWD
+ os.environ["RTDEBUG"] = auth.RTDEBUG
+
+ # TODO: may need to add a timeout
+ # NOTE: RT3.8
+ query = "Subject like '%%%s%%' and Queue='Monitor' and ( Status='new' or Status='open' )" % pattern
+ cmd = """rt ls -s -t ticket "%s" 2>&1 """ % query
+ cmd = cmd + """| grep -vi "no match" | wc -l """
+
+ out = os.popen(cmd, 'r')
+ open_tickets = out.read()
+
+ try:
+ open_tickets_i = int(open_tickets)
+ except:
+ print "UNKNOWN: failed to convert %s to open ticket count" % open_tickets
+ sys.exit(3)
+
+ if open_tickets_i == 0:
+ print "OK: no open tickets for site"
+ sys.exit(0)
+ elif open_tickets_i != 0:
+ print "WARNING: %s open tickets" % open_tickets_i
+ sys.exit(1)
+ else:
+ print "FAKE-CRITICAL: RT check failed"
+ sys.exit(2)
+
+
+if __name__ == '__main__':
+ f = open("/tmp/checkpcu", 'a')
+ f.write("checkpcu %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
+ f.close()
+ main()