From 88b2ef9aab4d95dd730fb70f20612a34bf5a8e09 Mon Sep 17 00:00:00 2001 From: Joey Schulze Date: Mon, 19 May 2014 10:26:32 +0200 Subject: [PATCH] Import file age checker http://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/File-Age-Check/details --- check_fileage | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100755 check_fileage diff --git a/check_fileage b/check_fileage new file mode 100755 index 0000000..7a13dc5 --- /dev/null +++ b/check_fileage @@ -0,0 +1,158 @@ +#!/usr/bin/python + +import os, sys, datetime, stat, time + +from stat import * + +version = "16th April 2007" +######################################################################################### +# Author: Craig Rayner +# 28th February 2007 +######################################################################################### + + +def getopts(argv): + + global version + + opts = {} + while argv: + x = len(argv) - 1 + if argv[0] == '-f': + opts[argv[0]] = argv[1] + argv = argv[2:] + elif argv[0] == '--file': + opts['-f'] = argv[1] + argv = argv[2:] + elif argv[0] == '-w': + opts[argv[0]] = argv[1] + argv = argv[2:] + elif argv[0] == '--warning': + opts['-w'] = argv[1] + argv = argv[2:] + elif argv[0] == '-c': + opts[argv[0]] = argv[1] + argv = argv[2:] + elif argv[0] == '--critical': + opts['-c'] = argv[1] + argv = argv[2:] + elif argv[0] == '-d': + opts[argv[0]] = argv[1] + argv = argv[2:] + elif argv[0] == '--datetype': + opts['-d'] = argv[1] + argv = argv[2:] + elif argv[0] == '-h': + PrintHelp() + argv = argv[1:] + elif argv[0] == '--help': + PrintHelp() + argv = argv[1:] + elif argv[0] == '-V': + print 'Version: ' + str(version) + argv = argv[1:] + elif argv[0] == '--version': + print 'Version: ' + str(version) + argv = argv[1:] + else: + argv = argv[1:] + return opts + +def PrintHelp(): + + global version + + print "Version: " + version + print """ + Usage: check_fileage -f /mount/path/file.ext -w nnnn -c nnnn [-d A|C|M] [-V] [-h] + + Options: + -h, --help + Print detailed help screen + -d, --datetype + Date Type: Return the date as defined: + A: (time of most recent access), + M: (time of most recent content modification), + C: (platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows). + The default is M. + -f, --file + The absolute path and file name. + -w, --warning + The age of the file in minutes to generate a warning notification. + -c, --critical + The age of the file in minutes to generate a critical notification. + -V, --version + State the Version + + Examples: + check_fileage -f /path/to/file -w 1440 -C 2880 + Returns OK if the file is less than the warning time in age. + """ + + +if __name__ == '__main__': + from sys import argv + myargs = getopts(argv) + if myargs.has_key('-V'): + print 'Version: ' + str(version) + datetype = 'M' + if myargs.has_key('-d'): + datetype = myargs['-d'] + if datetype not in 'ACM': + datetype = 'M' + if myargs.has_key('-w'): + warning = int(myargs['-w']) * 60 + else: + print 'The warning time is not set. See check_fileage.py --help' + PrintHelp() + sys.exit(3) + if myargs.has_key('-c'): + critical = int(myargs['-c']) * 60 + if critical <= warning: + print 'The critical time must be older than the warning time. See check_fileage.py --help' + sys.exit(3) + else: + print 'The critical time is not set. See check_fileage.py --help' + PrintHelp() + sys.exit(3) + if myargs.has_key('-f'): + try: + filestat = os.stat(myargs['-f']) + if datetype == 'A': + filedate = filestat.st_atime + descriptive = 'last access' + elif datetype == 'C': + filedate = filestat.st_ctime + descriptive = 'created (NOT *NIX)' + else: + filedate = filestat.st_mtime + descriptive = 'modified' + today = time.mktime(time.localtime()) + exitstate = 0 + fileage = time.strftime('%a %d %b/%Y %H:%M', time.localtime(filedate)) + filename = myargs['-f'] + if filename[1] == ":": + filename = filename[2:] + filename = filename.replace("\\", "/") + filename = os.path.basename(filename) + exitmessage = 'OK: ' + filename + ' has a ' + descriptive + ' date of ' + fileage + '\n' + if today > filedate + warning: + exitstate = 1 + exitmessage = 'Warning: ' + exitmessage[4:] + if today > filedate + critical: + exitstate = 2 + exitmessage = 'Critical: ' + exitmessage[9:] + print exitmessage + sys.exit(exitstate) + except OSError: + filename = myargs['-f'] + if filename[1] == ":": + filename = filename[2:] + filename = filename.replace("\\", "/") + filename = os.path.basename(filename) + print 'Unknown: System Error - Unable to access the file ' + filename + sys.exit(3) + else: + print 'The file name was not set. See check_fileage.py --help' + PrintHelp() + sys.exit(3) -- 2.11.0