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字典数据对象拆分的简单实现方法
Dec 05 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
Django框架验证码用法实例分析
May 10 Python
Pandas中DataFrame的分组/分割/合并的实现
Jul 16 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 Python
python 镜像环境搭建总结
Sep 23 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的宝库目录--PEAR
2006/10/09 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
js tab 选项卡
2009/04/26 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
jquery获取transform里的值实现方法
2017/12/12 jQuery
基于jquery的on和click的区别详解
2018/01/15 jQuery
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python字符串处理函数简明总结
2015/04/13 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
保密工作承诺书
2014/08/29 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
小学运动会通讯稿
2015/07/18 职场文书
大学生创业计划书
2019/06/24 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS