bclnux中python 2.7湖區磁盤samrt資訊
#!/usr/bin/python
# encodig: utf-8
import re
import datetime
import subprocess
list = []
disk_tmp = []
disk_info = []
def smart_scan():
disk_list_info = subprocess.Popen('smartctl --scan', shell=True, stdout=subprocess.PIPE)
disk_lists = str(disk_list_info.stdout.read()).split("device\n")[:-1]
for i in range(0,len(disk_lists)):
disk_name = disk_lists[i].split(" ")[0]
if disk_name == '/dev/bus/0':
disk_keys = disk_lists[i].split(" ")[2]
#list.append(disk_keys)
cmds = 'smartctl -a -d '+disk_keys+' /dev/sda'
infotmp = subprocess.Popen(cmds,shell=True, stdout=subprocess.PIPE)
smartctl_infos = str(infotmp.stdout.read()).split("\n")
raws_split1="RAW_VALUE"
raws_split2="SMART Error Log Version:"
raws_split= raws_split1 + "(.*)" +raws_split2
for data in smartctl_infos:
if re.match(r".*Model:",data) != None:
model_name = data.split(" ")[-1]
models = 'model:'+model_name
disk_tmp.append(models)
elif re.match(r".*Number",data) != None:
numbers = data.split(" ")[-1]
number = 'serial_number:'+numbers
disk_tmp.append(number)
elif re.match(r".*Local Time",data) != None:
date_list = data.split(" ")
years = date_list[-2]
days = date_list[-4]
months = date_list[7]
date = years+months+days
time = datetime.datetime.strptime(date,"%Y%b%d")
time = time.strftime("%Y%m%d")
times = "dt:"+time
disk_tmp.append(times)
raws_lists = re.findall(raws_split,str(smartctl_infos))[0]
raws_list = []
raws_list.append(raws_lists)
raws = raws_list[0].split("', '")[1:-2]
for r in range(0,len(raws)):
raw_id = raws[r][0:3]
raw_value = raws[r].split(" ")[-1]
raw = "smart_"+raw_id+"raw"+":"+raw_value
disk_tmp.append(raw)
disk_info.append(disk_tmp)
#print cmds
#print smartctl_infos
def put_txt():
f = open("disk_info.txt","w")
for line in disk_info:
f.write(str(line)+'\n')
f.close()
smart_scan()
put_txt()