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的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
wxPython实现窗口用图片做背景
Apr 25 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Python语言进阶知识点总结
May 28 Python
django 中QuerySet特性功能详解
Jul 25 Python
利用Python检测URL状态
Jul 31 Python
wxPython实现带颜色的进度条
Nov 19 Python
python+OpenCV实现图像拼接
Mar 05 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
Python使用BeautifulSoup4修改网页内容
May 20 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实现Socket服务器的代码
2008/04/03 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
原生js二级联动效果
2017/06/20 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python实现无证书加密解密实例
2014/10/27 Python
Python编程之序列操作实例详解
2017/07/22 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
应届毕业生通用的自荐书范文
2014/02/07 职场文书
《老王》教学反思
2014/02/23 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
社区元宵节活动总结
2015/02/06 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python