Import file age checker import
authorJoey Schulze <joey@infodrom.org>
Mon, 19 May 2014 08:26:32 +0000 (10:26 +0200)
committerJoey Schulze <joey@infodrom.org>
Mon, 19 May 2014 08:26:32 +0000 (10:26 +0200)
http://exchange.nagios.org/directory/Plugins/System-Metrics/File-System/File-Age-Check/details

check_fileage [new file with mode: 0755]

diff --git a/check_fileage b/check_fileage
new file mode 100755 (executable)
index 0000000..7a13dc5
--- /dev/null
@@ -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)