#!/usr/bin/python3 import subprocess import json def runCmd(cmdString): result = subprocess.run(cmdString, stdout=subprocess.PIPE, shell=True).stdout.decode('utf-8') return result def findHddId(): hddDict = {} results = runCmd("blkid").split("\n") for line in results: if line == "": continue hddInfoList = line.split(" ") if len(hddInfoList) > 1 and hddInfoList[0].startswith("/dev/sd"): hddName = hddInfoList[0].replace(":", "") hddDict[hddName] = {} for hddInfoline in hddInfoList[1:]: kvList = hddInfoline.split("=") if len(kvList) > 1: hddDict[hddName][kvList[0].replace("\"", "")] = kvList[1].replace("\"", "") return hddDict def findHddTemp(hddDict): for hddName in sorted(hddDict.keys()): cmd = f"smartctl -A {hddName} | grep Temperature_Celsius" hddTempString = runCmd(cmd) hddTempList = hddTempString.split(" ") hddTempList = [item for item in hddTempList if item != ""] if len(hddTempList) > 9: hddDict[hddName]["temp"] = int(hddTempList[9]) def getHddTemp(): hddDict = findHddId() findHddTemp(hddDict) return hddDict def main(): hddDict = getHddTemp() print(f"{json.dumps(hddDict, indent=4)}") if __name__ == "__main__": main()