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 14 Python
简析Python的闭包和装饰器
Feb 26 Python
详谈python read readline readlines的区别
Sep 22 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
Jan 15 Python
pandas 操作 Excel操作总结
Mar 31 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 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 session和cookie使用说明
2010/04/07 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python多线程实现同步的四种方式
2017/05/02 Python
Python中扩展包的安装方法详解
2017/06/14 Python
django中的setting最佳配置小结
2017/11/21 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python类的继承用法示例
2019/01/31 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
新年团拜会主持词
2014/04/02 职场文书
行政处罚告知书
2015/07/01 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
React四级菜单的实现
2022/04/08 Javascript