今天放假后第一天上班,将假前自学制作mib表的东西说一下。
在这里呢,我以世界-中国-上海-闵行这种包含关系介绍,感觉更容易理解。
MIB file的开始和结束
所有的MIB file的都以DEFINITIONS ::= BEGIN关键字开始,以END结束。我们所有添加的节点均应在此之间。
USER DEFINITIONS ::= BEGIN
……
……
END
模块引用区域
在MIB开始关键字后,即是模块引用区域,利用IMPORTS标识,所有的模块引用及群组的引用均使用FROM关键字说明其出处,引用使用分号(;)结束。
注:分号,英文全角分号。
在一个MIB file中,所有引用到的数据类型均应有引用。
如:
IMPORTS
enterprises
FROM RFC1155-SMI
Integer32
FROM SNMPv2-SMI
DisplayString
FROM SNMPv2-TC;
MIB核心部分(对象标识,标量节点,表格对象的定义)
对象标识
对象标识用关键字OBJECT IDENTIFIER声明,它的主要功能是用来将一类功能的对象结合起来。展开或折叠此对象标识即可展开或折叠此类功能的所有对象。
在ASN.1中,对象标识符类型描述对象的抽象信息,MIB树中的每一个标号是用对象标识符描述的。
例如:
share OBJECT IDENTIFIER ::= {enterprises 5000}
share是一个子树支,它定义在enterprises树支下,“5000” 是子树share在父树enterprises下的一个唯一对象标识符。
其编译后的视图为:
标量节点
在每一个树支下,可以定义被管理资源的管理对象,其中一类是标量节点(直观地看象树叶的节点)。利用OBJECT-TYPE定义。其定义的句法如下:
objectname OBJECT-TYPE
SYNTAX (syntax)
MAX-ACCESS (access)
STATUS (status)
DESCRIPTION (description)
::= { ( parent ) ( number )
关键字 |
说明 |
备注 |
objectname |
被管理对象的名字 |
必须以小写字母开头 |
OBJECT-TYPE |
每一个叶子对象所必须的关键字 |
|
syntax |
被管理对象类型的关键字 |
Counter(计数) Gauge(标准) DisplayString(显示字符串) Interger(整数) TimeTicks(时间戳) NetworkAddress(网络地址) IpAddress(Ipv4地址) |
access |
该节点支持的访问方式 |
read-only(只读) read-write(读写) read-create(读和创建) no-accessible(不可访问) |
status |
该节点的状态 |
current (当前的) deprecated (反对的) obsolete(废弃的) |
description |
对被管理对象的功能、特征等进行描述的关键字 |
例如:
Minxing OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"
"
::= { Shanghai 1 }
给个实例:
文章开头的那个实例源码如下:(红色标示的是你需要修改的,注意从属关系)
USER DEFINITIONS ::= BEGIN
IMPORTS
enterprises, Integer32, OBJECT-TYPE, MODULE-IDENTITY
FROM SNMPv2-SMI;
-- 1.3.6.1.4.1.5000
share MODULE-IDENTITY
DESCRIPTION
""
::= { enterprises 5000 }
--
-- Node definitions
--
-- 1.3.6.1.4.1.5000.1
WORLD OBJECT IDENTIFIER ::= { share 1 }
-- 1.3.6.1.4.1.5000.1.1
CHINA OBJECT IDENTIFIER ::= { WORLD 1 }
-- 1.3.6.1.4.1.5000.1.1.1
Shanghai OBJECT IDENTIFIER ::= { CHINA 1 }
-- 1.3.6.1.4.1.5000.1.1.1.1
Minxing OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
""
::= { Shanghai 1 }
END
结果如下: