Files
monitoring/kvmSensors.py
2026-04-27 11:35:05 +02:00

66 lines
1.7 KiB
Python

import subprocess
def fans(data):
if "FAN" in data[0]:
fandata = {}
fandata["id"] = data[0]
fandata["rpm"] = data[1]
fandata["status"] = data[3]
return fandata
def voltage(data):
if "VOLT" in data[0]:
voltdata = {}
voltdata["id"] = data[0]
voltdata["voltage"] = data[1]
voltdata["status"] = data[3]
return voltdata
def temp(data):
if "TEMP" in data[0]:
tempdata = {}
tempdata["id"] = data[0]
tempdata["temp"] = data[1]
tempdata["status"] = data[3]
return tempdata
def readSensors():
result = subprocess.run(['ipmitool', 'sensor'], stdout=subprocess.PIPE)
result = str(result.stdout).replace(" ", "").replace("b'", "").replace("'", "").split("\\n")
retdata = {}
fandata = {}
tempdata = {}
voltdata = {}
fanindex = 0
voltindex = 0
tempindex = 0
for sensor in result:
data = sensor.split("|")
try:
if data[1] != "na":
if data[1] != "0x0":
# print(data)
if fans(data) != None:
fandata[str(fanindex)] = fans(data)
fanindex += 1
if voltage(data) != None:
voltdata[str(voltindex)] = voltage(data)
voltindex += 1
if temp(data) != None:
tempdata[str(tempindex)] = temp(data)
tempindex += 1
except: # Exception as e: print(e)
pass
retdata["fans"] = fandata
retdata["volt"] = voltdata
retdata["temp"] = tempdata
return retdata
if __name__ == "__main__":
print(readSensors())