Python实现数通设备端口使用情况监控实例
本文实例讲述了Python实现数通设备端口使用情况监控的方法。分享给大家供大家参考。具体如下:
最近因工作需要,上面要求,每天需上报运维的几百数通设备端口使用情况【】,虽然有现成网管监控工具监控设备状态,但做报表,有点不方便,特写了个小脚本。上传的,为半成品可用程序
注:测试运行于ubuntn,需安装snmpwalk工具,
目标数通设备,需做好相关snmp配置
#/usr/bin/python
#coding:utf-8
importos,sys
importre
frompprintimportpprint
#甯歌佸巶瀹舵暟閫氳惧嘙IB鍊?
MIB={
'public':{
'ports':{
'string':'.1.3.6.1.2.1.2.2.1.2',
'status':'.1.3.6.1.2.1.2.2.1.8',#2down
}
},
'huawei':{
},
'cisco':{
}
}
#绔鍙g姸鎬佽浆鎹?
defportStatus(_s):
ifint(_s)==2:
return'down'
elifint(_s)==1:
return'up'
else:
return'none'
#鎵ц岀郴缁熷懡浠snmpwalk璋冪敤
defsnmpwalk(host,publicKey,iso):
return[i.strip()foriinos.popen('/usr/bin/snmpwalk-c%s-v2c%s%s'%(publicKey,host,iso)).readlines()]
defgetPorts(_ip,_public,option):
ifoption=='ports':
postsString=(j.split('=')[1].split(':')[1].replace('"','').strip()forjinsnmpwalk(_ip,_public,MIB['public']['ports']['string']))
postsStatus=(int(j.split('=')[1].split(':')[1].strip())forjinsnmpwalk(_ip,_public,MIB['public']['ports']['status']))
returnzip(postsString,postsStatus)
else:
print('onthiscommmnad')
publicKey='hi'#sunmppublickey
HOSTS={
'10.221.98.2':{'type':'switch','origin':'quidway','public':publicKey},
'10.221.98.3':{'type':'switch','origin':'quidway','public':publicKey},
'10.221.97.108':{'type':'firewall','origin':'h3c','public':publicKey},
'10.231.98.233':{'type':'switch','origin':'cisco','public':publicKey},
}
if__name__=='__main__':
foriinHOSTS.keys():
forhost,statusingetPorts(i,HOSTS[i]['public'],'ports'):
print("%s\t%s\t%s"%(i,host.ljust(30),portStatus(status).ljust(20)))
print(''.ljust(50,'#'))
运行结果:
root@ubuntn12:/tmp#pythonsnmpwalk.py
10.221.98.2 InLoopBack0 up
10.221.98.2 NULL0 up
10.221.98.2 GigabitEthernet0/0/0 down
10.221.98.2 Aux0/0/1 down
10.221.98.2 Vlanif100 up
10.221.98.2 Eth-Trunk1 down
10.221.98.2 Eth-Trunk1.32 down
10.221.98.2 Eth-Trunk1.50 down
10.221.98.2 Eth-Trunk1.60 down
10.221.98.2 Eth-Trunk1.70 down
10.221.98.2 Eth-Trunk1.80 down
10.221.98.2 Eth-Trunk1.100 down
10.221.98.2 Eth-Trunk1.110 down
.......
希望本文所述对大家的Python程序设计有所帮助。