从lm_sensors命令解析温度

时间:2013-02-10 07:10:34

标签: python bash parsing sensor temperature

目前我正在使用lm_sensors从我的服务器获取温度信息。我想运行一个每5分钟运行lm_sensors的cron作业,获取温度数据并将其放入CSV文件中。但是,我对如何解析lm_sensors输出感到茫然。我想用Python或bash解析它,因为它们是我最舒服的语言。我将粘贴lm_sensors命令的当前输出作为我正在使用的数据的示例。如果有人能指出我如何剥离数据的正确方向,我可以从那里找出其余部分。谢谢你的帮助。

示例输出:

$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +0.0°C  (high = +70.0°C, crit = +90.0°C)


atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:       +1.42 V  (min =  +0.85 V, max =  +1.70 V)
+3.3 Voltage:       +3.38 V  (min =  +2.97 V, max =  +3.63 V)
+5 Voltage:         +4.95 V  (min =  +4.50 V, max =  +5.50 V)
+12 Voltage:       +12.48 V  (min = +10.20 V, max = +13.80 V)
CPU FAN Speed:      1510 RPM  (min =  600 RPM)
CHASSIS FAN Speed:  1683 RPM  (min =  600 RPM)
CPU Temperature:     +37.0°C  (high = +60.0°C, crit = +95.0°C)
MB Temperature:      +25.0°C  (high = +45.0°C, crit = +75.0°C)

3 个答案:

答案 0 :(得分:3)

如果你想使用Python,请使用PySensors,但实际上并没有重新发明轮子。设置任意数量的监控系统,例如cactimuninothers,并完成它。

答案 1 :(得分:2)

使用-u开关运行传感器,用于原始输出。你会得到这样的东西:

    Adapter: PCI adapter
power1:
  power1_input: 21.950
  power1_crit: 124.947

f71889a-isa-0480
Adapter: ISA adapter
+3.3V:
  in0_input: 3.264
in1:
  in1_input: 0.968
  in1_max: 2.040

如您所见,硬件传感器返回的实际值将以sensor_input形式的字符串标记。从那里开始,将所需的值放入脚本中应该相当容易,比如每秒钟监控传感器的单行脚本:

#!/bin/sh
watch -n 1 "sensors -u | sed -n 's/_input//p'"

答案 2 :(得分:1)

grep只获取您想要的行,然后cut获取您需要的字段。

或简单的awk脚本。