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 Django批量导入不重复数据
Mar 25 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
python实现dijkstra最短路由算法
Jan 17 Python
Django Rest framework权限的详细用法
Jul 25 Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
python多线程和多进程关系详解
Dec 14 Python
PyCharm常用配置和常用插件(小结)
Feb 06 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
php实现图片添加水印功能
2014/02/13 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
js实现图片轮播效果
2015/12/19 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python实现自动登录
2018/09/17 Python
python中if嵌套命令实例讲解
2021/02/25 Python
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
新电JAVA笔试题目
2014/08/31 面试题
一套C#面试题
2013/10/09 面试题
幼儿园老师辞职信
2014/01/20 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
村党支部公开承诺书
2014/05/29 职场文书
2014年党支部承诺书
2014/05/30 职场文书
五心教育心得体会
2014/09/04 职场文书
党员自我评价2015
2015/03/03 职场文书
聚会通知怎么写
2015/04/23 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
pytorch 实现变分自动编码器的操作
2021/05/24 Python
anaconda python3.8安装后降级
2021/06/11 Python
PHP 时间处理类Carbon
2022/05/20 PHP