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


Posted in Python onApril 02, 2014

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

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

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

#/usr/bin/python
#coding:utf-8
import os,sys
import re
from 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':{
   }
}
#绔??g?舵??杞???
def portStatus(_s):
    if int(_s)==2:
        return 'down'
    elif int(_s)==1:
        return 'up'
    else:
        return 'none'
#?ц?绯荤??戒护snmpwalk璋???BR>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 相关文章推荐
python简单实现旋转图片的方法
May 30 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
对Python中type打开文件的方式介绍
Apr 28 Python
Python合并多个Excel数据的方法
Jul 16 Python
python实现多人聊天室
Mar 31 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
python中翻译功能translate模块实现方法
Dec 17 Python
python3 删除所有自定义变量的操作
Apr 08 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 Python
Python绘制散乱的点构成的图的方法
Apr 21 Python
使用python解析xml成对应的html示例分享
Apr 02 #Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 #Python
使用python绘制人人网好友关系图示例
Apr 01 #Python
python异步任务队列示例
Apr 01 #Python
用Python编程实现语音控制电脑
Apr 01 #Python
35个Python编程小技巧
Apr 01 #Python
ptyhon实现sitemap生成示例
Mar 30 #Python
You might like
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
再谈javascript原型继承
2014/11/10 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
python实现海螺图片的方法示例
2019/05/12 Python
django Admin文档生成器使用详解
2019/07/22 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
维稳工作情况汇报
2014/10/27 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis