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 相关文章推荐
Linux下Python获取IP地址的代码
Nov 30 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
django解决跨域请求的问题
Nov 11 Python
对Python3 序列解包详解
Feb 16 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
python模拟斗地主发牌
Apr 22 Python
Python自动化之批量处理工作簿和工作表
Jun 03 Python
openstack中的rpc远程调用的方法
Jul 09 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/17 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
js获取元素外链样式的方法
2015/01/27 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python实现在线程里运行scrapy的方法
2015/04/07 Python
python实现批量监控网站
2016/09/09 Python
详解flask入门模板引擎
2018/07/18 Python
python字典一键多值实例代码分享
2019/06/14 Python
使用python实现kNN分类算法
2019/10/16 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
python suds访问webservice服务实现
2020/06/26 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
六道php面试题附答案
2014/06/05 面试题
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
实习护理工作自我评价
2013/09/25 职场文书
前台接待岗位职责
2013/12/03 职场文书
主管会计岗位责任制
2014/02/10 职场文书
工作目标责任书
2014/07/23 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
公司与个人合作协议书
2016/03/19 职场文书
导游词之无锡古运河
2019/11/14 职场文书