SNMP——使用MIB-Browser 并编写 MIB库

SNMP——使用MIB-Browser 并编写 MIB库SNMP 的基本知识此处就不再介绍了 就默认大家已经会了 本文重点是 MIB 的学习及实践 MIB Managed Information Base 管理信息库 保存被管对象信息的 虚拟 数据库 被管对象用 SMI 定义 被管对象为树形结构 类似 OSI SNMP 的被管对象也被组织在注册树中

大家好,我是讯享网,很高兴认识大家。

SNMP的基本知识此处就不再介绍了,就默认大家已经会了,本文重点是MIB的学习及实践。

MIB (Managed Information Base)管理信息库

  • 保存被管对象信息的(虚拟)数据库
  • 被管对象用SMI定义
  • 被管对象为树形结构
  • 类似OSI, SNMP的被管对象也被组织在注册树中
    在这里插入图片描述
    讯享网
  • 基本被管对象:在SNMP中,只有处于叶子节点上的对象是可以直接访问的

directory(1): 为与OSI directory 相关的、将来的应用而保留
mgmt(2): 用于在IAB批准的文档中定义的对象
experimental(3): 用于表示在Internet 实验中应用的对象
private(4): 用于标识专用对象 :

  • 目前只定义了一个子节点:enterprise
  • 各厂商的mib在enterprise 中分别注册
  • http://www.iana.org/assignments/enterprise-numbers

以RFC1155 MIB库介绍 SNMP的数据类型和结构

在这里插入图片描述

  • 通俗地来描述EXPORT 有点像函数声明,声明以下名称的节点可以外部调用。
    在这里插入图片描述
  • 通过 OBJECT IDENTIFIER 创建节点并指定下挂的上级节点位置,如 directory 定义为 internet 的 1号子节点。
    在这里插入图片描述
  • RFC1155 库中定义的对象属性宏,创建了对象的基本属性,属于底层定义,我们只需会调用即可。

在这里插入图片描述

  • 由OBJECT IDENTIFIER 创建了ObjectName, 用于定义被管对象的名称, 简单类比C语言的typedef 过程。
    在这里插入图片描述
  • 不同的对象可以赋予不同的数据类型,将会有不同的属性。
    在这里插入图片描述
  • 可以看到RFC 1155库中的自定义数据类型 IpAddress 等的定义过程

在这里插入图片描述

在这里插入图片描述

  • 为了简化和规范定义方法,SMI定义了OBJECT-TYPE宏
  • RFC1155-SMI中定义了OBJECT-TYPE宏
  • RFC1212对OBJECT-TYPE宏进行了重新定义(完善)

可以看到完善后的宏更为直观易懂,包含了"SYNTAX", “ACCESS”,“STATUS”, value 等属性。
在这里插入图片描述
利用OBJECT-TYPE MACRO定义被管对象类,只要确定其名称、标识符,给出SYNTAX、ACCESS、STATUS、DESCRIPTION等参数即可,可以看成是OBJECT-TYPE MACRO的参数调用过程

定义表格

  • 使用SEQUENCE、SEQUENCE OF来定义表格,注意要给出IndexPart参数
    具体参考下方实例。

MIB库实际创建

1、安装SNMP Agent 在这里插入图片描述

在这里插入图片描述
然而,我没有这个选项,所以应该:
在这里插入图片描述
在这里插入图片描述

找到这个,安装
在这里插入图片描述
然而并不行,安装之后依然找不到,索性直接进行下一步,反而在服务里找到了正在运行的SNMP,所以这个版本win10不需要在windos功能里打勾

在这里插入图片描述
在这里插入图片描述

2、安装MIB Browser

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例程:
编写一个“手机店”的 mib 库,该 mib 库位于enterprise节点下、编号为你的学号后5位节点下面。下级节点包括:

  • 手机店名称 – 字符串,只读
  • 手机店地址 – 字符串,只读
  • 手机店老板姓名 – 字符串,读写
  • 手机店手机总数 – 整数,只读
  • 手机库存表
    * 手机型号 – 字符串,具备唯一性,索引列 * 手机生产厂商 – 字符串,只读 * 手机CPU核数 – 整数,只读 * 手机内存大小 – 整数,只读。单位:GB * 手机存储大小 – 整数,只读。单位:GB * 该型号手机的库存数量 – 整数,只读 

    讯享网

要求:可通过 MIB Browser 成功加载。

讯享网SHOUJIDIAN-MIB DEFINITIONS ::= BEGIN -- 为注释,不影响代码 -- 引用RFC1155 和 RFC1212 IMPORTS enterprises, Counter FROM RFC1155-SMI OBJECT-TYPE FROM RFC-1212; --定义enterprises下shoujidian节点 shoujidian OBJECT IDENTIFIER ::= { enterprises 10000 } --为了方便,将OCTET STRING和INTEGER 定义为自己习惯的字符 String ::= OCTET STRING Int ::= INTEGER --手机店名称 --用宏定义创建对象StoreName,OCTET STRING 类型,长度0-10,只读,强制型,位于shoujidian 节点1位置 StoreName OBJECT-TYPE SYNTAX String (SIZE(0..10)) ACCESS read-only STATUS mandatory DESCRIPTION "cell phone store's name" ::= { shoujidian 1 } --手机店地址 StoreAddress OBJECT-TYPE SYNTAX String (SIZE(0..10)) ACCESS read-only STATUS mandatory DESCRIPTION "cell phone store's address" ::= { shoujidian 2 } --手机店老板姓名 BossName OBJECT-TYPE SYNTAX String (SIZE(0..10)) ACCESS read-write STATUS mandatory DESCRIPTION "name of cell phone store's boss" ::= { shoujidian 3 } --手机店手机总数 NumofPhones OBJECT-TYPE SYNTAX Int (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "number of phones " ::= { shoujidian 4 } --库存信息 --创建table类型repertory,用SEQUENCE OF数据类型,位于shoujidian 5节点位置 repertory OBJECT-TYPE SYNTAX SEQUENCE OF Repertory ACCESS not-accessible STATUS mandatory DESCRIPTION "Information of repertory" ::= { shoujidian 5 } --列表下创建子对象,同时将其作为索引列。此处使用子对象PhoneModel作为索引。 repertorySituation OBJECT-TYPE SYNTAX Repertory ACCESS not-accessible STATUS mandatory DESCRIPTION "cellphone model." INDEX { PhoneModel } ::= { repertory 1 } --声明Repertory所包含的对象及类型,用sequence 创建表格类型的对象 Repertory ::= SEQUENCE{ PhoneModel String, Producter String, CPUNums Int, RAM Int, Storage Int, RepertoryNum Int } --分别创建对象 PhoneModel OBJECT-TYPE SYNTAX String (SIZE(0..10)) ACCESS read-only STATUS mandatory DESCRIPTION "different type of cellphones" ::= { repertorySituation 1 } Producter OBJECT-TYPE SYNTAX String (SIZE(0..10)) ACCESS read-only STATUS mandatory DESCRIPTION "producter" ::= { repertorySituation 2 } CPUNums OBJECT-TYPE SYNTAX Int (0..1000) ACCESS read-only STATUS mandatory DESCRIPTION "number of CPU kernals" ::= { repertorySituation 3 } RAM OBJECT-TYPE SYNTAX Int (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "Capacity of the memory module, units: GB" ::= { repertorySituation 4 } Storage OBJECT-TYPE SYNTAX Int (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "Storage of cellphone, units: GB" ::= { repertorySituation 5 } RepertoryNum OBJECT-TYPE SYNTAX Int (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "quantity in stock" ::= { repertorySituation 6 } --结束标志 END 
小讯
上一篇 2025-04-05 12:10
下一篇 2025-03-31 14:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67995.html