首页 > 编程 > Python > 正文

Python实现数通设备端口使用情况监控实例

2019-11-25 17:11:00
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现数通设备端口使用情况监控的方法。分享给大家供大家参考。具体如下:

最近因工作需要,上面要求,每天需上报运维的几百数通设备端口使用情况【】,虽然有现成网管监控工具监控设备状态,但做报表,有点不方便,特写了个小脚本。上传的,为半成品可用程序

注:测试运行于ubuntn,需安装snmpwalk工具,

目标数通设备,需做好相关snmp配置

#/usr/bin/python#coding:utf-8import os,sysimport refrom pprint import pprint#甯歌伴璁惧MIB?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', #2 down  } }, 'huawei':{ }, 'cisco':{ }}#绔舵杞#63;def portStatus(_s): if int(_s)==2:  return 'down' elif int(_s)==1:  return 'up' else:  return 'none'#ц绯荤戒护snmpwalk璋def snmpwalk(host,publicKey,iso): return [i.strip() for i in os.popen('/usr/bin/snmpwalk -c %s -v 2c %s %s'%(publicKey,host,iso)).readlines()]def getPorts(_ip,_public,option): if option == 'ports':  postsString = (j.split('=')[1].split(':')[1].replace('"','').strip() for j in snmpwalk(_ip,_public,MIB['public']['ports']['string']))  postsStatus = (int(j.split('=')[1].split(':')[1].strip()) for j in snmpwalk(_ip,_public,MIB['public']['ports']['status']))  return zip(postsString,postsStatus) else:  print('on this commmnad')publicKey = 'hi' #sunmp public keyHOSTS={ '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__': for i in HOSTS.keys():  for host,status in getPorts(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# python snmpwalk.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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表