python实现数通设备端口监控示例

2018-09-24 21:32

阅读:409

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

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

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

  复制代码 代码如下:
#/usr/bin/python
#coding:utf-8

  import os,sys
import re
from pprint import pprint

#甯歌鍘傚鏁伴€氳澶嘙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, #2 down
}
},
huawei:{

   },
cisco:{
}
}
#绔彛鐘舵€佽浆鎹?
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 key

  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__:
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


评论


亲,登录后才可以留言!