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

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库实际创建

系统:Windos 10 21H1 (由于win10很烂的更新,不同版本会遇到不同的状况,下面是我遇到的问题)
软件:iReasoning MIB Browser

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值