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修改注册表终止360进程实例
Oct 13 Python
使用python开发vim插件及心得分享
Nov 04 Python
python文件操作之目录遍历实例分析
May 20 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python模拟表单提交登录图书馆
Apr 27 Python
Python中如何导入类示例详解
Apr 17 Python
python儿童学游戏编程知识点总结
Jun 03 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
bat批处理之字符串操作的实现
Mar 16 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
桌面中心(二)数据库写入
2006/10/09 PHP
PHP合并静态文件详解
2014/11/14 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
室内设计自我鉴定
2013/10/15 职场文书
护理专科毕业推荐信
2013/11/10 职场文书
厨师长岗位职责
2014/03/02 职场文书
2014年政教处工作总结
2014/12/20 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书