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

yipeiwu_com6年前Python基础

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

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

相关文章

python/Matplotlib绘制复变函数图像教程

python/Matplotlib绘制复变函数图像教程

今天发现sympy依赖的库mpmath里也有很多数学函数,其中也有在复平面绘制二维图的函数cplot,具体例子如下 from mpmath import * def f1(z):...

关于Tensorflow中的tf.train.batch函数的使用

这两天一直在看tensorflow中的读取数据的队列,说实话,真的是很难懂。也可能我之前没这方面的经验吧,最早我都使用的theano,什么都是自己写。经过这两天的文档以及相关资料,并且请...

python二维码操作:对QRCode和MyQR入门详解

python二维码操作:对QRCode和MyQR入门详解

python是所有编程语言中模块最丰富的 生活中常见的二维码功能在使用python第三方库来生成十分容易 三个大矩形是定位图案,用于标记二维码的大小。这三个定位图案有白边,通过这三个矩...

Python捕捉和模拟鼠标事件的方法

本文实例讲述了Python捕捉和模拟鼠标事件的方法。分享给大家供大家参考。具体分析如下: 这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想...

Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】

Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】

本文实例讲述了Python列表原理与用法。分享给大家供大家参考,具体如下: 列表的基本认识 列表简介 列表的创建 基本语法[]创建 list()创建...