#! /usr/local/bin/python # $Id: check_todo_age.py 1391 2007-06-07 21:45:11Z jnieuwen $ # Usage: command2nagios.py import fcntl import os import re import sys import datetime todofile = sys.argv[2] jnieuwenfile = sys.argv[1] critical = 0 warning = 0 todofd = open(todofile,"r") try: todofd.readline() for todo in todofd.readlines(): if not re.match('- wait:',todo): date = re.sub('^[^:]+:',"",todo) date = re.sub(':.*',"",date) (year,month,day) = re.split('-',date,3) tododate = datetime.date(int(year),int(month),int(day)) if datetime.date.today() - tododate > datetime.timedelta(30): critical += 1 elif datetime.date.today() - tododate > datetime.timedelta(14): warning += 1 finally: todofd.close file = open(jnieuwenfile,"r+") try: if critical > 0: fcntl.flock(file,fcntl.LOCK_SH) nagiosfile=file.readlines() fcntl.flock(file,fcntl.LOCK_UN) file.close() file = open(jnieuwenfile,"w") fcntl.flock(file,fcntl.LOCK_EX) for line in nagiosfile: if re.match('^todoage',line): file.write("todoage:2:CRITICAL - " +str( critical) + " old todos\n") else: file.write(line) fcntl.flock(file,fcntl.LOCK_UN) elif warning > 0: fcntl.flock(file,fcntl.LOCK_SH) nagiosfile=file.readlines() fcntl.flock(file,fcntl.LOCK_UN) file.close() file = open(jnieuwenfile,"w") fcntl.flock(file,fcntl.LOCK_EX) for line in nagiosfile: if re.match('^todoage',line): file.write("todoage:1:WARNING - " + str(warning) + " old todos\n") else: file.write(line) fcntl.flock(file,fcntl.LOCK_UN) else: fcntl.flock(file,fcntl.LOCK_SH) nagiosfile=file.readlines() fcntl.flock(file,fcntl.LOCK_UN) file.close() file = open(jnieuwenfile,"w") fcntl.flock(file,fcntl.LOCK_EX) for line in nagiosfile: if re.match('^todoage',line): file.write("todoage:0:OK - no to old todas\n") else: file.write(line) fcntl.flock(file,fcntl.LOCK_UN) finally: file.close()