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编程中的异常处理教程
Aug 21 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
python实现图书管理系统
Mar 12 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
Python远程视频监控程序的实例代码
May 05 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 Python
python字符串的一些常见实用操作
Apr 06 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
我的论坛源代码(五)
2006/10/09 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
javascript Keycode对照表
2009/10/24 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[01:10]3.19DOTA2发布会 三代刀塔人第一代
2014/03/25 DOTA
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python存取XML的常见方法实例分析
2017/03/21 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
个园导游词
2015/02/04 职场文书
琅琊山导游词
2015/02/05 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android