add check_lmsensors
This commit is contained in:
63
check_lmsensors.py
Normal file
63
check_lmsensors.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/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)
|
||||||
Reference in New Issue
Block a user