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实现类的静态变量用法实例
May 08 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
python实现猜数字小游戏
Mar 24 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Django学习笔记之为Model添加Action
Apr 30 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
教你怎么用python selenium实现自动化测试
May 27 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 ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
webpack多页面开发实践
2017/12/18 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
用js实现放大镜效果
2020/10/28 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
家长会主持词开场白
2014/03/18 职场文书
团日活动总结
2014/04/28 职场文书
学校政风行风整改方案
2014/10/25 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python