#!/usr/bin/python import shlex, datetime, re, sys, optparse parser = optparse.OptionParser(usage = """Usage: %prog [options] Parse the apache log file for matches to the mythweb root within the specified idle time. Returns 0 if idle and 1 if not. """) parser.add_option("-i", "--idle", dest = "idle", help = "idle time", type = "int", default = 300) parser.add_option("-l", "--log", dest = "logfile", help = "log file", default = "/var/log/apache2/access.log") parser.add_option("-r", "--rootre", dest = "rootre", help = "RE to match root of mythweb", default = "^/mythweb") (options, args) = parser.parse_args() if options.idle < 0: parser.error("idle time must be positive") idletime = 300 logfile = "/var/log/apache2/access.log" try: rootre = re.compile(options.rootre) except e: print "Unable to compile root regular expression: " + str(e) sys.exit(2) try: f = open(logfile, 'r') except IOError, e: print "Unable to open logfile: " + str(e) sys.exit(2) isidle = True for line in f: data = shlex.split(line) linetime = datetime.datetime.strptime(data[3], '[%d/%b/%Y:%H:%M:%S') if (datetime.datetime.now() - linetime).seconds < 300: if rootre.match(data[5].split()[1]) is not None: isidle = False break if isidle: sys.exit(0) else: sys.exit(1)