From 1e2387474a449452b78520b9ad96a8b4b5e99722 Mon Sep 17 00:00:00 2001 From: Harald Pfeiffer Date: Wed, 17 Apr 2019 19:07:19 +0200 Subject: initial commit of source fetch --- .../check_libs_ng/Makefile | 5 ++ .../check_libs_ng/check_libs_ng | 90 ++++++++++++++++++++++ .../check_libs_ng/control | 4 + .../check_libs_ng/copyright | 23 ++++++ .../check_libs_ng/tests | 2 + 5 files changed, 124 insertions(+) create mode 100644 nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/Makefile create mode 100644 nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/check_libs_ng create mode 100644 nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/control create mode 100644 nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/copyright create mode 100644 nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/tests (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng') diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/Makefile b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/Makefile new file mode 100644 index 0000000..ce3f252 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/Makefile @@ -0,0 +1,5 @@ +#/usr/bin/make -f + +PLUGIN = check_libs_ng + +include ../common.mk diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/check_libs_ng b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/check_libs_ng new file mode 100644 index 0000000..e0053e0 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/check_libs_ng @@ -0,0 +1,90 @@ +#!/usr/bin/python + +# Copyright (c) 2017 Leo Antunes +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +from __future__ import print_function + +import os +import sys +from glob import glob +import argparse +import logging + +__version__ = '0.1.0' + +OK = 0 +WARNING = 1 +CRITICAL = 2 +UNKNOWN = 3 + + +def main(): + argparser = argparse.ArgumentParser() + argparser.add_argument('--version', action='version', version='%(prog)s ' + __version__) + argparser.add_argument('--quiet', action='store_true', help='no output if nothing found') + argparser.add_argument('--verbose', action='store_true', help='be verbose about the search process') + + args = argparser.parse_args() + + logger = logging.getLogger(os.path.basename(sys.argv[0])) + if args.verbose: + logging.basicConfig(level=logging.DEBUG) + else: + logging.basicConfig(level=logging.WARNING) + + needs_reload = dict() + for proc in glob('/proc/[0-9]*'): # numbers to avoid e.g. /proc/self + exe = os.path.join(proc, 'exe') + if os.path.exists(exe): + proc_pid = os.path.basename(proc) + proc_name = os.path.basename(os.path.realpath(exe)) + logger.debug('checking process %s', proc_name) + os.chdir(os.path.join(proc, 'map_files')) + for map_file in os.listdir('.'): + # all files in /map_files/ are absolute symlinks, so we don't need abspath() + real_map_file_path = os.path.realpath(map_file) + if not '/lib/' in real_map_file_path: + logger.debug('skipping non-lib path %s', real_map_file_path) + continue + else: + logger.debug('checking lib %s', real_map_file_path) + if os.stat(map_file).st_nlink == 0: + needs_reload.setdefault(proc_name, set()).add(proc_pid) + else: + logger.debug('skipping kernel process %s', os.path.basename(proc)) + + if needs_reload: + procs_with_pids = ', '.join(map(lambda x: '%s (%s)' % (x, ', '.join(needs_reload[x])), needs_reload)) + print('The following processes have libs linked that were upgraded:', procs_with_pids) + exit(WARNING) + elif not args.quiet: + print('No upgraded libs linked in running processes') + + exit(OK) + +if __name__ == '__main__': + try: + main() + except Exception as e: + print('Exception:', e) + exit(UNKNOWN) diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/control b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/control new file mode 100644 index 0000000..d64ed13 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/control @@ -0,0 +1,4 @@ +Uploaders: Leo Antunes +Description: plugin to report processes using outdated libraries + depents on kernel features present in kernels newer than 3.3 +Version: 0.1.0 diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/copyright b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/copyright new file mode 100644 index 0000000..57afc28 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/copyright @@ -0,0 +1,23 @@ + +check_libs_ng: + +Copyright (c) 2017 Leo Antunes + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/tests b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/tests new file mode 100644 index 0000000..998b2c7 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_libs_ng/tests @@ -0,0 +1,2 @@ +Restrictions: needs-root +Test-Command: /usr/lib/nagios/plugins/check_libs_ng \ No newline at end of file -- cgit v1.2.3