#!/usr/bin/python3 import json import subprocess import sys import re from pprint import pprint TEMP_RE = re.compile("temp\d_input") threshold_warning = 70 threshold_critical = 80 exit_code=3 message="Unknown problem occured during execution" try: def check_values(d): warning = False critical = False for value in d.values(): if value >= threshold_warning: warning = True if value >= threshold_critical: critical = True if critical: return 2 if warning: return 1 return 0 def format_dict(d): result = "" for key, value in d.items(): result += f"|'{key}'={value}°C;{threshold_warning};{threshold_critical}\n" return result def get_data(): json_data = subprocess.run(["sensors", "-Aj"], capture_output=True).stdout parsed = json.loads(json_data) stats = {} for adapter, data in parsed.items(): for sensor, data in data.items(): temp_value = None for key, value in data.items(): if TEMP_RE.fullmatch(key): temp_value = value if temp_value is not None: stats[f"{adapter}.{sensor}"] = temp_value return stats data = get_data() exit_code = check_values(data) if exit_code == 0: message = "SENSORS OK" elif exit_code == 1: message = "SENSORS WARNING" elif exit_code == 2: message = "SENSORS CRITICAL" else: message = "SOMETHINGS WRONG" message += format_dict(data) finally: print(message) sys.exit(exit_code)