Python实现数通设备端口使用情况监控实例


Posted in Python onJuly 15, 2015

本文实例讲述了Python实现数通设备端口使用情况监控的方法。分享给大家供大家参考。具体如下:

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

注:测试运行于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璋??
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 相关文章推荐
wxPython 入门教程
Oct 07 Python
python根据路径导入模块的方法
Sep 30 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
利用python打印出菱形、三角形以及矩形的方法实例
Aug 08 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
Python 互换字典的键值对实例
Feb 12 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
一文详述 Python 中的 property 语法
Sep 01 Python
用python制作个音乐下载器
Jan 30 Python
Python实现快速多线程ping的方法
Jul 15 #Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 #Python
Python的Django框架中if标签的相关使用
Jul 15 #Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 #Python
python实现判断数组是否包含指定元素的方法
Jul 15 #Python
python获取元素在数组中索引号的方法
Jul 15 #Python
Django框架中方法的访问和查找
Jul 15 #Python
You might like
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
php生成与读取excel文件
2016/10/14 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
浅谈js的setInterval事件
2014/12/05 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
五十岁生日宴会答谢词
2014/01/15 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015年计划生育责任书
2015/05/08 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python