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的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
django之常用命令详解
Jun 30 Python
python实现FTP服务器服务的方法
Apr 11 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
Python嵌套式数据结构实例浅析
Mar 05 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Django接收照片储存文件的实例代码
Mar 07 Python
Numpy中ndim、shape、dtype、astype的用法详解
Jun 14 Python
Python中常用的os操作汇总
Nov 05 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
JS 文件传参及处理技巧分析
2010/05/13 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
js截取小数点后几位的写法
2013/11/14 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python正则表达式之对号入座篇
2018/07/24 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
委托书的格式
2014/08/01 职场文书
小学运动会加油稿
2015/07/22 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技