#!/usr/bin/python
import re
import os
def getAllitems(host,oid):
sn1 = os.popen( 'snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split( '\n' )[: - 1 ]
return sn1
def getDate(source,newitem):
for item in source[ 5 :]:
newitem.append(item.split( ':' )[ 3 ].strip())
return newitem
def getRealDate(item1,item2,listname):
for i in range ( len (item1)):
listname.append( int (item1[i]) * int (item2[i]) / 1024 )
return listname
def caculateDiskUsedRate(host):
hrStorageDescr = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageDescr' )
hrStorageUsed = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageUsed' )
hrStorageSize = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageSize' )
hrStorageAllocationUnits = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageAllocationUnits' )
disk_list = []
hrsused = []
hrsize = []
hrsaunits = []
#get disk_list
for item in hrStorageDescr:
if re.search( '/' ,item):
disk_list.append(item.split( ':' )[ 3 ])
#print disk_list
getDate(hrStorageUsed,hrsused)
getDate(hrStorageSize,hrsize)
#print getDate(hrStorageAllocationUnits,hrsaunits)
#get hrstorageAllocationUnits
for item in hrStorageAllocationUnits[ 5 :]:
hrsaunits.append(item.split( ':' )[ 3 ].strip().split( ' ' )[ 0 ])
#caculate the result
#disk_used = hrStorageUsed * hrStorageAllocationUnits /1024 (KB)
disk_used = []
total_size = []
disk_used = getRealDate(hrsused,hrsaunits,disk_used)
total_size = getRealDate(hrsize,hrsaunits,total_size)
diskused_rate = []
for i in range ( len (disk_used)):
diskused_rate.append( str ( round (( float (disk_used[i]) / float (total_size[i]) * 100 ), 2 )) + '%' )
return diskused_rate,disk_list
if __name__ = = '__main__' :
hosts = [ '192.168.30.111' , '192.168.30.112' ]
for host in hosts:
result = caculateDiskUsedRate(host)
diskused_rate = result[ 0 ]
partition = result[ 1 ]
print "==========" ,host, '=========='
for i in range ( len (diskused_rate)):
print '%-20s used: %s' % (partition[i],diskused_rate[i])
print
|