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 相关文章推荐
python的多重继承的理解
Aug 06 Python
django 常用orm操作详解
Sep 13 Python
django定期执行任务(实例讲解)
Nov 03 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python设置随机种子实例讲解
Sep 12 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 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
使用Composer安装Yii框架的方法
2016/03/15 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
JS动态显示倒计时效果
2019/12/12 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
Python中django学习心得
2017/12/06 Python
使用python画社交网络图实例代码
2019/07/10 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
交通安全寄语大全
2014/04/08 职场文书
承诺书样本
2014/08/30 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
党校个人总结
2015/03/04 职场文书
北大自主招生自荐信
2015/03/04 职场文书
个人培训总结
2015/03/05 职场文书
走进毛泽东观后感
2015/06/04 职场文书
新学期开学标语2015
2015/07/16 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL