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中IPYTHON入门实例
May 11 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
django+mysql的使用示例
Nov 23 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
django框架cookie和session用法实例详解
Dec 10 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python selenium爬取微博数据代码实例
May 22 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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生成二维码的两种方法(带logo图像)
2014/03/14 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
解决Python传递中文参数的问题
2015/08/04 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
办理退休介绍信
2014/01/09 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2015年测量员工作总结
2015/05/23 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL