python实现数通设备端口监控示例


Posted in Python onApril 02, 2014

最近因工作需要,上面要求,每天需上报运维的几百数通设备端口使用情况【】,虽然有现成网管监控工具监控设备状态,但做报表,有点不方便,特写了个小脚本。

注:测试运行于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璋???BR>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之开始真正编程
Sep 12 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
Numpy数组的保存与读取方法
Apr 04 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
pandas factorize实现将字符串特征转化为数字特征
Dec 19 Python
如何通过python实现人脸识别验证
Jan 17 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
python复合条件下的字典排序
Dec 18 Python
使用python解析xml成对应的html示例分享
Apr 02 #Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 #Python
使用python绘制人人网好友关系图示例
Apr 01 #Python
python异步任务队列示例
Apr 01 #Python
用Python编程实现语音控制电脑
Apr 01 #Python
35个Python编程小技巧
Apr 01 #Python
ptyhon实现sitemap生成示例
Mar 30 #Python
You might like
Zerg剧情介绍
2020/03/14 星际争霸
PHP基础知识介绍
2013/09/17 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php写入、删除与复制文件的方法
2015/06/20 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery的学习步骤
2011/02/23 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Python聚类算法之基本K均值实例详解
2015/11/20 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python实现验证码识别
2020/06/15 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
饭店工作计划书
2014/01/10 职场文书
活动倡议书范文
2014/05/13 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
如何写观后感
2015/06/19 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL