天天看點

磁盤smart資訊

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()           
下一篇: stl smart指針