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使用urllib2获取网络资源实例讲解
Dec 02 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
理解python正则表达式
Jan 15 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
利用Python将图片中扭曲矩形的复原
Sep 07 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之require/include顺序 推荐
2011/01/02 PHP
php简单的会话类代码
2011/08/08 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
详解python中的index函数用法
2019/08/06 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
数控机械专业个人的自我评价
2014/01/02 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
小学体育教学反思
2014/01/31 职场文书
三八妇女节标语
2014/10/09 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
超强台风观后感
2015/06/09 职场文书
关于军训的感想
2015/08/07 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript