这一年一直在做一个综合管控平台的项目,用python写的,项目春节前可能就要进行实际部署了和测试,趁着这个空闲期,回顾一下项目中用到的一些技术,第一个就是SNMP协议。

项目结构主要是实现对ipran网络的监控和管理,工单派发等功能。ipran网络设备类似于交换机,路由器。反正可以把它们想象成这类设备,因为原理基本差不多,除了一些特定的功能。既然是监控管理,必不可少的就是性能采集了。采用的是snmp协议(简单网络管理协议)。

  先来个snmp的简介吧

1 SNMP

1.1  SNMP简介

SNMP(Simple Network Management Protocol,简单网络管理协议)是互联网中的一种网络管理标准协议,广泛用于实现管理设备对被管理设备的访问和管理。SNMP具有以下优势:

  • 支持网络设备的智能化管理。利用基于SNMP的网络管理平台,网络管理员可以查询网络设备的运行状态和参数,配置参数值,发现故障,完成故障诊断,进行容量规划和制作报告。
  • 支持对不同物理特性的设备进行管理。SNMP只提供最基本的功能集,使得管理任务与被管理设备的物理特性和联网技术相对独立,从而实现对不同厂商设备的管理。

1.1.1  SNMP的网络架构

SNMP网络架构由三部分组成:NMS、Agent和MIB。

  • NMS(Network Management System,网络管理系统)是SNMP网络的管理者,能够提供友好的人机交互界面,方便网络管理员完成大多数的网络管理工作。
  • Agent是SNMP网络的被管理者,负责接收、处理来自NMS的SNMP报文。在某些情况下,如接口状态发生改变时,Agent也会主动向NMS发送告警信息。
  • MIB(Management Information Base,管理信息库)是被管理对象的集合。NMS管理设备的时候,通常会关注设备的一些参数,比如接口状态、CPU利用率等,这些参数就是被管理对象,在MIB中称为节点。每个Agent都有自己的MIB。MIB定义了节点之间的层次关系以及对象的一系列属性,比如对象的名称、访问权限和数据类型等。被管理设备都有自己的MIB文件,在NMS上编译这些MIB文件,就能生成该设备的MIB。NMS根据访问权限对MIB节点进行读/写操作,从而实现对Agent的管理。

NMS、Agent和MIB之间的关系如图1-1所示。

图1-1 NMS、Agent和MIB关系图

1.1.2  MIB和MIB视图

MIB以树状结构进行存储。树的每个节点都是一个被管理对象,它用从根开始的一条路径唯一地识别(OID)。如图1-2所示,被管理对象B可以用一串数字{1.2.1.1}唯一确定,这串数字是被管理对象的OID(Object Identifier,对象标识符)。

MIB视图是MIB的子集合,将团体名/用户名与MIB视图绑定,可以限制NMS能够访问的MIB对象。当用户配置MIB视图包含某个MIB子树时,NMS可以访问该子树的所有节点;当用户配置MIB视图不包含某个MIB子树时,NMS不能访问该子树的所有节点。

图1-2 MIB树结构

先上两个管理snmp的工具

snmpwalk

snmpwalk是一个SNMP小程序,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。

安装方法:

我自己电脑是windows的,实际工作是linux的

snmpwalk没有单独的安装包,它被包含在net-snmp软件包中的,所以我们只需要安装net-snmp软件包就可以得到snmpwalk。

windows直接去网上下载安装,跟安装平常软件没有什么区别

使用方法:

snmpwalk -v 2或3(代表SNMP版本) -c SNMP读密码 IP地址 OID(对象标示符)

参数选项

–h:显示帮助。

–v:指定snmp的版本, 1或者2c或者3。

–c:指定连接设备SNMP密码。

–V:显示当前snmpwalk命令行版本。

–r:指定重试次数,默认为0次。

–t:指定每次请求的等待超时时间,单为秒,默认为3秒。

–l:指定安全级别:noAuthNoPriv|authNoPriv|authPriv。

–a:验证协议:MD5|SHA。只有-l指定为authNoPriv或authPriv时才需要。

–A:验证字符串。只有-l指定为authNoPriv或authPriv时才需要。

–x:加密协议:DES。只有-l指定为authPriv时才需要。

–X:加密字符串。只有-l指定为authPriv时才需要。

另外一个是MIB Brower

iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持。 MIB浏览器是工程师管理启用SNMP的网络设备和应用程序不可或缺的工具。 它允许用户加载标准的,专有的MIB,甚至一些错误的MIB。 它还允许它们发出SNMP请求以检索代理的数据,或对代理进行更改。 内置陷阱接收器可以根据其规则引擎接收和处理SNMP陷阱。

下载地址:http://www.ireasoning.com/download.shtml

这个使用比较简单,只要填入HOST Address 和 OID 就能获取信息了

python操作SNMP

用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmppysnmp两个库。网上有较多的关于两个库的例子。

我们选择的是netsnmp,python的netsnmp,其实是来自于net-snmp包。官网:http://www.net-snmp.org/download.html

在你下载的安装包里有个python的目录,那就是python的netsnmp

切换到目录下

python setup.py install 安装就可以了

最后来一个小例子,展示一下netsnmp的用法

# -*- coding: utf-8 -*-

import netsnmp

class Snmp(object):
"""
SNMP
"""
def __init__(self, oid="sysDescr", version=1, destHost="localhost", community="public"):
self.oid = oid
self.version = version
self.destHost = destHost
self.community = community @property
def query(self):
"""
获取snmp信息
"""
try:
result = netsnmp.snmpwalk(self.oid,
Version=self.version,
DestHost=self.destHost,
Community=self.community)
except Exception as e:
result = None
return result def main():
#oid 填写name或oid号是等效的
test_obj = SnmpClass(oid="1.3.6.1.4.1.9966.2.201.6.11.11", destHost="192.168.10.121")
print test_obj.query if __name__ == '__main__':
main()

python net-snmp 的使用的更多相关文章

  1. python工具---snmp流量监控,自定义粒度,业务突发可视化

    现在主流监控软件和云平台提供的流量监控,监控粒度最小只能设置为1分钟,无法准确定位故障,特别是瞬时突发较大的业务 对比python的snmp库还是更喜欢用subprocess调用snmpwalk命令, ...

  2. Python 封装SNMP调用接口

    PySNMP 是一个纯粹用Python实现的SNMP,用PySNMP的最抽象的API为One-line Applications,其中有两类API:同步的和非同步的,都在模块pysnmp.entity ...

  3. python通过snmp协议运用多线程获取多台主机网卡信息,写入数据库

    #-*- coding:utf-8 -*- import netsnmp class SnmpClass(object): """ SNMP ""&q ...

  4. Python 调用snmp自定义OID实现监控

    http://kkkkkk.blog.51cto.com/468162/1172726 http://blog.csdn.net/mirahs/article/details/49619729

  5. python并发获取snmp信息及性能测试

    python & snmp 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取 ...

  6. SNMP学习笔记之Python的netsnmp和pysnmp的性能对比

    0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同 ...

  7. snmp爆破(python脚本)

    snmp用来获取信息,然后利用获取的信息来进一步的渗透. 命令行有 snmpwalk -v 2c -c public ip system -c是密码,默认的密码是public 利用工具可以找windo ...

  8. SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息

    0x00 SNMP TRAP简介 SNMP(Simple Network Management Protocol) trap是一种很有用,但是也容易让人难以理解的协议. 虽然名字叫做简单网络管理协议, ...

  9. SNMP学习笔记之SNMP的安装及Python的调用

    0x00 概述 本文是介绍SNMP在Windows和Linux(Ubuntu)下的安装,以及通过Python调用其接口的文章. 0x01 开发环境 Python 3.5.1 Windows 10 64 ...

随机推荐

  1. WebVR认识

    什么是WebVR WebVR是一种开放标准,可以在浏览器中体验VR,目标是让每个人都能轻松进入虚拟现实体验.

  2. null与undefined的比较

    null在JavaScript中是关键字,它属于一个特殊的值,即空值. 而undefined它不是关键字,它表示未定义,属于预定义的全局变量. null == undefined 返回的是 true  ...

  3. Apache服务器配置

    之前做代码一直按照传统化的方法部署别人的网站,但是一直不成功,尝试了很多次最后才发现时虚拟主机的问题 使用apache默认为127.0.0.1和网站的配置发生冲突. 因此在apache的conf文件夹 ...

  4. HDU5410--01背包+完全背包

    CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  5. 【MySQL】20个经典面试题,全部答对月薪10k+

    Part2:经典题目 1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 2.MySQL中myisam与innodb的区别,至少5点 (1).问5点不同: (2).innodb引 ...

  6. float和double的区别

    1.float是单精度类型,精度有效数字为6位,超出则会四舍五入,取值范围为10的-38次方到10的38次方,float占用存储空间为4个字节. 2.double是双精度类型,精度有效数字为15位,超 ...

  7. backbone与require的共存问题解决

    如果向下面那样直接列出script标签可能会出现错误,   <script type="text/javascript" src="/dep/jquery-1.11 ...

  8. Python爬虫(十四)_BeautifulSoup4 解析器

    CSS选择器:BeautifulSoup4 和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据. lxml只会局部遍历,而B ...

  9. hdu1754 I Hate It (线段树 更新点的值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  10. SharePoint 2010 Url Shortener --SharePoint 2010 短URL生成器

    SharePoint 2010 Url Shortener --SharePoint 2010 短URL生成器 项目描写叙述 本项目加入了这种功能.在SP站点中能够生成短URLs. 这些URLs指向列 ...