66 lines
1.7 KiB
Python
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())
|