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 相关文章推荐
python3 与python2 异常处理的区别与联系
Jun 19 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
python实现NB-IoT模块远程控制
Jun 20 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
python验证码图片处理(二值化)
Nov 01 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
Python读写锁实现实现代码解析
Nov 28 Python
python反编译教程之2048小游戏实例
Mar 03 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数据缓存的使用说明
2013/05/10 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
php常见的魔术方法详解
2014/12/25 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
使用console进行性能测试
2015/04/27 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
解析vue中的$mount
2017/12/21 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
vue组件创建的三种方式小结
2020/02/03 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
Python的print用法示例
2014/02/11 Python
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python笔记之facade模式
2019/11/20 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
毕业生找工作的自我评价
2013/10/18 职场文书
心得体会怎么写
2013/12/30 职场文书
新郎父亲婚宴答谢词
2014/01/11 职场文书
简易离婚协议书范本
2014/10/24 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
分享提高 Python 代码的可读性的技巧
2022/03/03 Python