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读取文件内容的三种常用方式及效率比较
Oct 07 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python实现朴素贝叶斯算法
Nov 19 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
Python django框架开发发布会签到系统(web开发)
Feb 12 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
Django模型层实现多表关系创建和多表操作
Jul 21 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实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python中max函数用法实例分析
2015/07/17 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python flask框架post接口调用示例
2019/07/03 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
django中cookiecutter的使用教程
2020/12/03 Python
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
员工培训心得体会
2013/12/30 职场文书
夏季奶茶店创业计划书
2014/01/16 职场文书
项目总经理岗位职责
2014/02/14 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
检察院起诉意见书
2015/05/20 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python