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中的With语句
Feb 02 Python
python查询sqlite数据表的方法
May 08 Python
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
python与idea的集成的实现
Nov 20 Python
python 装饰器重要在哪
Feb 14 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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正则匹配汉字的方法介绍
2013/04/25 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python入门篇之正则表达式
2014/10/20 Python
python安装以及IDE的配置教程
2015/04/29 Python
python使用udp实现聊天器功能
2018/12/10 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
幼儿园教师考核制度
2014/02/01 职场文书
股权收购意向书
2014/04/01 职场文书
股指期货心得体会
2014/09/13 职场文书
优秀英文求职信范文
2015/03/19 职场文书
推广普通话的宣传语
2015/07/13 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang