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程序设计有所帮助。