d[prev] = a
return d
+def get_next_pattern(argv, last):
+ """ This is worse than the function above. """
+ i = 0
+ if last is not None:
+ for a in argv:
+ if argv[i] == last:
+ break
+ i += 1
+ for offset,a in enumerate(argv[i+1:]):
+ if a == "-p":
+ return argv[i+2+offset]
+ return None
+
+
def main():
- d = argv_to_dict(sys.argv[1:])
+ #d = argv_to_dict(sys.argv[1:])
+ r = -1
+ o = -1
+ last = None
- if 'pattern' in d or 'p' in d:
- try:
- pattern = d['pattern']
- except:
- pattern = d['p']
- else:
- print "UNKNOWN: Argument error"
+ while True:
+ pattern = get_next_pattern(sys.argv, last)
+ if pattern == None:
+ break
+ last = pattern
+
+ (r_ret,o_ret) = look_for_pattern(pattern)
+ r = max(r, r_ret)
+ o = max(o, o_ret)
+
+ if r == 3:
+ print "UNKNOWN: failed to convert %s to open ticket count" % o
sys.exit(3)
+ elif r == 0:
+ print "OK: no open tickets for site"
+ sys.exit(0)
+ elif r == 1:
+ print "WARNING: %s open tickets" % o
+ sys.exit(1)
+ else:
+ print "FAKE-CRITICAL: RT check failed"
+ sys.exit(2)
+def look_for_pattern(pattern):
# TODO: check that RT is configured correctly
os.environ["RTSERVER"] = auth.RTSERVER
cmd = """rt ls -s -t ticket "%s" 2>&1 """ % query
cmd = cmd + """| grep -vi "no match" | wc -l """
+ # print >>sys.stderr, cmd
+ # print >>sys.stderr, os.environ
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)
+ return (3,None)
if open_tickets_i == 0:
- print "OK: no open tickets for site"
- sys.exit(0)
+ return (0,0)
elif open_tickets_i != 0:
- print "WARNING: %s open tickets" % open_tickets_i
- sys.exit(1)
+ return (1,open_tickets_i)
else:
- print "FAKE-CRITICAL: RT check failed"
- sys.exit(2)
+ return (2,open_tickets_i)
if __name__ == '__main__':
- f = open("/tmp/checkpcu", 'a')
- f.write("checkpcu %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
+ f = open("/tmp/checkrt", 'a')
+ f.write("checkrt %s %s\n" % (time.time(), " ".join(sys.argv[1:])))
f.close()
main()