Linux-监控SSD健康状态的脚本基于smartctl工具的使用

服务器为WIN SERVER主机,不像开源平台那么多软件可以支持监控,这里用smartctl 来监控服务器上的硬盘指标,只针对SSD的处理

其中ssd 为sda 

#!/usr/bin/env python 
#coding:gbk 

import subprocess
import os
smart_bin_path = r'C:\Program Files (x86)\smartmontools\bin'  #此处为smartctl工具的安装目录
os.chdir("%s"%smart_bin_path)
cmd ='smartctl.exe -H sda' #H表示检查整体健康状态
healthResult = "PASSED"  #表示健康 否则意味着磁盘故障或将会发生故障
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
pcont = p.stdout.readlines()[-2]
if healthResult in pcont:
    print 1;  #由于是放到zabbix上用图形表示,用1表示常态 0表示异常
else:
    print 0

  

 监控磁盘各类的信息指标

#!/usr/bin/evn python 
#coding:gbk 
import subprocess
import os

smart_bin_path = r'C:\Program Files (x86)\smartmontools\bin'
os.chdir("%s"%smart_bin_path)
cmd ='smartctl.exe -a sda'
Raw_Read_Error_Rate = "Raw_Read_Error_Rate" #底层数据读取错误率   在zabbix中传值,此处改成sys.argv[1]来处理 
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
pcont = p.stdout.readlines()
for x in pcont:
    if Raw_Read_Error_Rate in x:
        rrerint = x.strip("\r\n").split("-")[-1].strip()
        if rrerint == "0": #默认为0 即没有问题,但如果大于0就需要注意
            print rrerint
        else:
            print 1

 

你可能感兴趣的:(Linux-监控SSD健康状态的脚本基于smartctl工具的使用)