Current File : //lib64/nagios/plugins/nccustom/check_ncsslplugin.py |
#!/usr/libexec/platform-python
# -*- coding: utf-8 -*-
# 2015/09/02, Eduard N.
# version 1.1
"""Nagios plugin to check status of un|installation NC ssl plugin."""
import os, re, sys
from subprocess import Popen, PIPE
log_file = '/usr/local/cpanel/logs/nc-ssl-cpanel-install.log'
version_file = '/usr/local/cpanel/3rdparty/ncssl/VERSION'
OK = 0; WARNING = 1; CRITICAL = 2; UNKNOWN = 3
re_status_critical = re.compile('[^#].* ERROR (Uni|I)nstallation: .*')
re_status_warning = re.compile('[^#].* WARNING (Uni|I)nstallation: .*')
def end(status, message, perfdata=""):
"""Exits the plugin with first arg as the return code and the second arg as the message to output."""
if perfdata:
print("{} | {}".format(message, perfdata))
else:
print("{}".format(message))
if status == OK:
sys.exit(OK)
elif status == WARNING:
sys.exit(WARNING)
elif status == CRITICAL:
sys.exit(CRITICAL)
else:
sys.exit(UNKNOWN)
status = False
if os.path.isfile(version_file):
version = open(version_file).readline().strip()
else:
version = Popen('/usr/local/cpanel/3rdparty/bin/php /usr/local/cpanel/whostmgr/cgi/ncssl/source/bin/console secrets:list -reveal |awk -e \'$1 ~ /VERSION/ {print $2}\'', stdout=PIPE, encoding="utf-8", shell=True).stdout.read()
if os.path.isfile(log_file):
for line in open(log_file):
if re.match(re_status_critical, line):
status = CRITICAL
message = line.strip()
break
elif re.match(re_status_warning, line):
status = WARNING
message = line.strip()
if status == CRITICAL:
end(status, message + ', ' + version)
elif status == WARNING:
end(status, message + ', ' + version)
else:
end(OK, "OK. File is present and no error is found, " + version)
else:
end(CRITICAL, "Log file %s doesn't exist, %s" % (log_file, version))