python实现数通设备端口监控示例
admin
2023-07-31 02:07:11
0

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

注:测试运行于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    

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...