befb1e3a7dd9043b74694fa197df38cf09d3819a
[monitor.git] / nagios / plugins / checkrt.py
1 #!/usr/bin/python
2
3 import os
4 import time
5 import sys
6 import auth
7
8 def argv_to_dict(argv):
9     """
10         NOTE: very bare-bones, no error checking, will fail easily.
11     """
12     d = {}
13     prev=None
14     for a in argv:
15         if "--" == a[0:2]:
16             prev = a[2:]
17         elif "-" == a[0:1]:
18             prev = a[1:]
19         else:
20             d[prev] = a
21     return d
22
23 def main():
24     d = argv_to_dict(sys.argv[1:])
25
26     if 'pattern' in d or 'p' in d:
27         try:
28             pattern = d['pattern']
29         except:
30             pattern = d['p']
31     else:
32         print "UNKNOWN: Argument error"
33         sys.exit(3)
34
35
36     # TODO: check that RT is configured correctly
37     os.environ["RTSERVER"] = auth.RTSERVER
38     os.environ["RTUSER"] = auth.RTUSER
39     os.environ["RTPASSWD"] = auth.RTPASSWD
40     os.environ["RTDEBUG"] = auth.RTDEBUG
41
42     # TODO: may need to add a timeout
43     # NOTE: RT3.8
44     query = "Subject like '%%%s%%' and Queue='Monitor' and ( Status='new' or Status='open' )" % pattern
45     cmd = """rt ls -s -t ticket "%s" 2>&1 """ % query
46     cmd = cmd + """| grep -vi "no match" | wc -l """
47
48     out = os.popen(cmd, 'r')
49     open_tickets = out.read()
50
51     try:
52         open_tickets_i = int(open_tickets)
53     except:
54         print "UNKNOWN: failed to convert %s to open ticket count" % open_tickets
55         sys.exit(3)
56
57     if open_tickets_i == 0:
58         print "OK: no open tickets for site"
59         sys.exit(0)
60     elif open_tickets_i != 0:
61         print "WARNING: %s open tickets" % open_tickets_i
62         sys.exit(1)
63     else:
64         print "FAKE-CRITICAL: RT check failed"
65         sys.exit(2)
66
67
68 if __name__ == '__main__':
69     f = open("/tmp/checkpcu", 'a')
70     f.write("checkpcu %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
71     f.close()
72     main()