#!/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的
你是什麼意思「他們工作很好?」退貨時他們的退出代碼是什麼? –
如果我在終端輸入smartctl -A/dev/sda,這個工作完美 –
如果你之後運行'echo $?',它是否打印'0'? –