whoami7 - Manager
:
/
lib64
/
nagios
/
plugins
/
Upload File:
files >> //lib64/nagios/plugins/check_fileage.py
#!/usr/bin/python ##################################### # this file is under Puppet control # # the last change: # # 2013/11/14, Eduard N. # ##################################### ##################################### # Author: Craig Rayner # # 28th February 2007 # # modified by Eduard N. # ##################################### version = "2013/11/04" import os, sys, datetime, stat, time from stat import * 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] == '-b': opts[argv[0]] = True argv = argv[1:] elif argv[0] == '--cpbackup': opts['-b'] = True argv = argv[1:] 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 -cpb [-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. -b, --cpbackup Additional cPanel backup check (Backup Accounts option) -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('-b'): try: cpb_conf_file = '/etc/cpbackup.conf' cpb_conf = open(cpb_conf_file) for line in cpb_conf: if line.split()[0] == 'BACKUPACCTS': if line.split()[1] == 'yes': break elif line.split()[1] == 'no': print 'Account backup is disabled' sys.exit(2) else: print 'Warning: Unable to read status of cPanel account backup from ' + cpb_conf_file sys.exit(1) except IOError: print 'Unknown: Unable to read output from ' + cpb_conf_file sys.exit(2) 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)
Copyright ©2021 || Defacer Indonesia