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实现的tab文件操作类分享
Nov 20 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
简单介绍Python中的RSS处理
Apr 13 Python
Python中的super用法详解
May 28 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
python实现图像外边界跟踪操作
Jul 13 Python
pycharm导入源码的具体步骤
Aug 04 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 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 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php图片添加水印例子
2016/07/20 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
django使用channels实现通信的示例
2020/10/19 Python
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
学前教育求职自荐信范文
2013/12/25 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python