#!/usr/bin/env python
# encoding: utf-8
import re
import subprocess
import time
import json
def get_temperatures(disks):
sensors = subprocess.check_output(["sensors"])
temperatures = {match[0]: float(match[1]) for match in re.findall("^(.*?)\:\s+\+?(.*?)°C",
sensors, re.MULTILINE)}
for disk in disks:
output = subprocess.check_output(["smartctl", "-A", disk])
temperatures[disk] = int(re.search("Temperature.*\s(\d+)\s*(?:\([\d\s]*\)|)$",
output, re.MULTILINE).group(1))
return temperatures
def main():
while True:
print json.dumps(get_temperatures(("/dev/sda2", "/dev/sdb1")))
time.sleep(20)
if __name__ == '__main__':
main()
这是一个使用smartmontools和lm-sensors监视Python温度的小脚本。但是当我尝试运行它时,我有一个错误Python subprocess.CalledProcessError:返回非零退出状态2
subprocess.CalledProcessError: Command '['smartctl', '-A', '/dev/sda2']' returned non-zero exit status 2
但是,当我在终端中手动尝试此命令他们工作很好。
一些信息:
uname -a
的Linux LME 4.0.0-040000泛型#201504121935 SMP太阳4月12日23时36分33秒UTC 2015年x86_64的x86_64的x86_64的GNU/Linux的
+1
你是什么意思“他们工作很好?”退货时他们的退出代码是什么? –
+0
如果我在终端输入smartctl -A/dev/sda,这个工作完美 –
+0
如果你之后运行'echo $?',它是否打印'0'? –