diff --git a/bin/xymon-vulnerabilities.py b/bin/xymon-vulnerabilities.py deleted file mode 100755 index a170a0d64fe4fa5611fc98989d89ac0eb2acd33f..0000000000000000000000000000000000000000 --- a/bin/xymon-vulnerabilities.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python3 - -import os -import sys -import re -import argparse -import traceback -from pathlib import Path - -try: - import lib_path - import lib -except: - pass -finally: - import pyxymon as pymon - -CHECK_NAME = 'vuln' -CHECK_VERSION = 2 -LIFETIME = 30 - -rgx = {} -cpu_vulnerabilities_base = '/sys/devices/system/cpu/vulnerabilities/' -cpu_vulnerabilities = ['l1tf','mds','meltdown','spec_store_bypass','spectre_v1','spectre_v2'] - -def yellow(xymon): - if xymon.color != pymon.STATUS_CRITICAL: - xymon.color = pymon.STATUS_WARNING - -def red(xymon): - xymon.color = pymon.STATUS_CRITICAL - - -def run_check(xymon, args): - title = 'CPU' - content = [] - - for vuln in cpu_vulnerabilities: - icon = '&green' - vuln_file = Path(''.join([cpu_vulnerabilities_base, vuln])) - - if vuln_file.is_file(): - with open(str(vuln_file)) as f: - lines = '<br>'.join(f.readlines()).rstrip() - - if lines.startswith('Vulnerable'): - icon = '&red' - if vuln in rgx and rgx[vuln].match(lines): - lines += ''.join([' (ignore: "', args[vuln], '")']) - else: - red(xymon) - else: - lines = 'Kernel needs update and host reboot' - icon = '&yellow' - yellow(xymon) - - content.append(''.join([icon, ' ', vuln, ': ', lines])) - - xymon.section(title, '<br>'.join(content)) - - -def main(): - parser = argparse.ArgumentParser() - for name in cpu_vulnerabilities: - parser.add_argument(''.join(['--', name]), dest=name, type=str, - help=' '.join([name, 'vulnerable but green if regex matches'])) - args = vars(parser.parse_args()) - - for key, value in args.items(): - if args[key]: - rgx[key] = re.compile(value) - - """Run xymon check""" - xymon = pymon.XymonClient(CHECK_NAME) - check_script = os.path.basename(__file__) - # The default criticity is set to 'pymon.STATUS_OK' - xymon.lifetime = LIFETIME - xymon.title('Vulnerabilities') - - try: - run_check(xymon, args) - except Exception as e: - xymon.color = pymon.STATUS_WARNING - xymon.section('Exception', e) - traceback.print_exc() - - xymon.footer(check_script, CHECK_VERSION) - xymon.send() - - -if __name__ == '__main__': - main() - sys.exit(0)