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 相关文章推荐
PyQt5每天必学之拖放事件
Aug 27 Python
python解决字符串倒序输出的问题
Jun 25 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
python os模块简单应用示例
May 23 Python
django最快程序开发流程详解
Jul 19 Python
ORM Django 终端打印 SQL 语句实现解析
Aug 09 Python
自定义django admin model表单提交的例子
Aug 23 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Python实现手机号自动判断男女性别(实例解析)
Dec 22 Python
Python如何对齐字符串
Jul 30 Python
Python读取pdf表格写入excel的方法
Jan 22 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 HTML代码串 截取实现代码
2009/06/29 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python画图学习入门教程
2016/07/01 Python
详解python之配置日志的几种方式
2017/05/22 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python扫描端口的实现
2021/01/25 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
顶撞领导检讨书
2014/01/29 职场文书
校园广播稿500字
2014/02/04 职场文书
工程质量承诺书
2014/03/27 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
员工升职自荐信
2015/03/27 职场文书