You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.4 KiB

2 years ago
  1. #! /usr/bin/env python
  2. import subprocess
  3. import sys
  4. def f_parse(sens_out):
  5. CPUN = 0
  6. firstCPU = True
  7. coreN = 0
  8. dimm = "0"
  9. ret = {}
  10. line_sp = ""
  11. for line in sens_out:
  12. if "DIMM" in line:
  13. line_sp = line.split()
  14. dimm = "DIMM" + line_sp[1] + "-" + line_sp[3][0]
  15. ret[dimm] = line_sp[4][1:-3]
  16. elif "coretemp" in line:
  17. if firstCPU:
  18. firstCPU = False
  19. else:
  20. CPUN = CPUN + 1
  21. elif "Core" in line:
  22. line_sp = line.split()
  23. coreN = "core" + str(CPUN) + "-" + line_sp[1][0]
  24. ret[coreN] = line_sp[2][1:-3]
  25. return(ret)
  26. def f_sensors():
  27. res = subprocess.Popen(['sudo sensors'], stdout=subprocess.PIPE, shell=True)
  28. sensors_out = res.stdout.readlines()
  29. return(sensors_out)
  30. def f_main():
  31. sensors_out = f_sensors()
  32. sensors_parsed = f_parse(sensors_out)
  33. return(sensors_parsed)
  34. def f_json_print(inp):
  35. first = True
  36. print("{")
  37. print("\t\"data\":[")
  38. for key in inp:
  39. if not first:
  40. sys.stdout.write(",")
  41. else:
  42. first = False
  43. sys.stdout.write("\n\t\t{\"{#SENSOR}\":\"" + key + "\"}")
  44. print("\n\t]")
  45. print("}")
  46. if __name__ == '__main__':
  47. out = {}
  48. out = f_main()
  49. if len(sys.argv) == 2 and sys.argv[1]:
  50. print((out.get(sys.argv[1], "error")))
  51. else:
  52. f_json_print(out)

Powered by TurnKey Linux.