1. #!/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. ########################################################## 
  4. # @This script is used to check disk free space for zabbix 
  5. # @Contact:      wangwei03@gyyx.cn 
  6. # @Name:         disk.py 
  7. # @Function:     check disk free space for zabbix 
  8. # @Author:       wangwei 
  9. ########################################################## 
  10. import platform 
  11. import commands 
  12.  
  13. def w_disk(): 
  14.     import wmi 
  15.     c = wmi.WMI () 
  16.     i = 0 
  17.     for disk in c.Win32_LogicalDisk (DriveType=3): 
  18.         a = int(disk.FreeSpace) / (1024*1024*1024
  19.         b = int(100.0 * long (disk.FreeSpace) / long (disk.Size)) 
  20.         if disk.Caption == "C:"
  21.             if (a < 2or (b < 10): 
  22.                 i += 1 
  23.             else
  24.                 i += 0 
  25.         else
  26.             if (a < 10or (b < 10): 
  27.                 i += 1 
  28.             else
  29.                 i += 0 
  30.     print i 
  31.  
  32. def L_disk(): 
  33.     free = commands.getstatusoutput('df -h|grep dev|egrep -v "tmp|var|shm"'
  34.     list = free[1].split('\n'
  35.     i = 0 
  36.     for disk in range(len(list)): 
  37.         vd = list[disk][6:8
  38.         a = list[disk].split()[3
  39.         if a[-1] == 'T'
  40.             a = int(float(a[:-1]))*1024 
  41.         else
  42.             a = int(float(a[:-1])) 
  43.         b = 100 - int(list[disk].split()[4][:-1]) 
  44.         if vd == "da"
  45.             if (a < 2or (b < 10): 
  46.                 i += 1 
  47.             else
  48.                 i += 0 
  49.         else
  50.             if (a < 10or (b < 10): 
  51.                 i += 1 
  52.             else
  53.                 i += 0 
  54.     print i 
  55.  
  56. if __name__ == "__main__"
  57.     os = platform.system() 
  58.     if os == "Windows"
  59.         w_disk() 
  60.     elif os == "Linux"
  61.         L_disk() 

此脚本主要用于zabbix监控系统硬盘只用,适用于windows和linux系统,返回值为0为正常,有几个分区的硬盘剩余少于10G或低于10%就为报警阀值(windows的C盘和linux的根分区除外)