MIB文件语法详解 | 您所在的位置:网站首页 › MIB定义了 › MIB文件语法详解 |
对MIB文件中一些常见的宏定义的描述 1.DEFINITIONS ::= BEGIN SNMP始终使用ASN.1概念中的描述块(module)来组织ASN.1对象的,ASN.1的描述块是一些相关描述语句的集合,module的结构如下 DEFINITIONS ::= BEGIN END
2. ::= TEXTUAL-CONVENTION 定义了对标准数据类型的进行扩展的语法 很多MIB定义中都会先定义一些基于标准类型的扩展类型,如: KBytes ::= TEXTUAL-CONVENTION(文本约定) STATUS current DESCRIPTION "Storage size, expressed in units of 1024 bytes." SYNTAX Integer32 (0..2147483647)
3. MODULE-IDENTITY(模块标识符) 该定义添加了一个公共的标示段来对整个信息描述块进行顶层的文字描述,以加强对管理MIB描述块的文档管理和控制,每个MIB定义中都会有该定义。 如: hostResourcesMibModule MODULE-IDENTITY
4.OBJECT-IDENTIFIFIER(对象标识符) 声明一个节点 如: host OBJECT-IDENTITY
5.OBJECT-TYPE(对象类型) 如: ciCircuitTable OBJECT-TYPE SYNTAX SEQUENCE OF CiCircuitEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The Circuit Interface Circuit Table." ::= { ciObjects 1 } 包括了SNMP定义该管理对象的全部信息,相当于一个模板。 表,实体,叶子都是该类型。
SNMPv2中对SNMP的兼容性做了规定,主要是通过引入三个宏: OBJECT-GROUP,MODULE-COMPLIANCE,AGENT-CAPABILITIES.
6.OBJECT-GROUP 定义相关管理对象集合以及他们彼此关联的一致性程度。OBJECT-GROUP声明的MIB对象是实现该组所必须包括的MIB对象的最小集合。也就是说,要实现这个组,必须包括这些对象。
7.MODULE-COMPLIANCE 通过定义模块内所包含的组来保证模块的兼容性。 规定了要实现该模块必须包含的组的最小集合。 其中MANDATORY-GROUPS规定了此模块必须实现的组的名称。GROUP子句说明条件必须活条件可选的组。
8.AGENT-CAPABILITIES 管理代理实现了模块中的哪些组以及这些组中的MIB对象在实现时和原定义的差别在管理信息结构中由此宏定义表示。此宏定义在实际应用中很少见。
9.OBJECT-IDENTITY 对象标示宏,此宏定义用于说明对象标示符(OBJECT-IDENTIFIER),给对象标示符的说明加上附加信息,包括状态,文字说明等,可用于对一个表中几个参数的不同组合的意义的说明。
10.NOTIFICATION-TYPE 说明了SNMPv2的trap格式。定义了通知类型报文中传输的数据。 MIB file的开始和结束 所有的MIB file的都以DEFINITIONS ::= BEGIN关键字开始,以END结束。我们所有添加的节点均应在此之间。 XXX-TEST-MIB 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树中的每一个标号是用对象标识符描述的。 例如: xxx OBJECT IDENTIFIER ::= {enterprises 22566} xxx是一个子树支,它定义在enterprises树支下,“22566” 是子树xxx在父树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 对被管理对象的功能、特征等进行描述的关键字
例如: Xxxx OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION " " ::= { xxxx 1 } 表类型表类型是一个特殊类型的声明,表内声明的对象称为列对象,表对象可以看作是一些标量对象的集合。利用SEQUENCE和SEQUENCE OF定义表格和表格中的行, 通常来说,表格对象的名字后面加有后缀Table,行对象的名字后面加有后缀Entry。 其声明如下: tablename OBJECT-TYPE SYNTAX SEQUENCE OF Entrytype MAX-ACCESS not-accessible STATUS current DESCRIPTION (description) :: ={ (parent) (number)}
entryname OBJECT-TYPE SYNTAX Entrytype MAX-ACCESS not-accessible STATUS current DESCRIPTION description INDEX { index list } :: ={ (tablename) 1}
(Entrytype) :: = SEQUENCE { (column1) (column1type), (column2) (column1type), ( columnN) (columnNtype) }
关键字 说明 备注 tablename 表格名 xxxxTable首字母小写 Entrytype 表对象名 XxxxEntry首字母大写 not-accessible 访问方式 此处必须是not-accessible entryname 行名 和XxxxEntry名相同,首字母小写xxxxEntry description 描述信息
源码如下: XXX-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS enterprises FROM RFC1155-SMI Integer32 FROM SNMPv2-SMI DisplayString FROM SNMPv2-TC;
xxx OBJECT IDENTIFIER ::= {enterprises 22566}
zkClassInfoTable OBJECT IDENTIFIER ::= {xxx 1} zkClassInfoTable2 OBJECT IDENTIFIER ::= {xxx 2}
zkClassInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF ZkClassInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is test table. " ::= {xxx 1}
zkClassInfoEntry OBJECT-TYPE SYNTAX ZkClassInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is teat entry. " INDEX {zkClassInfoIndex} ::= {zkClassInfoTable 1}
ZkClassInfoEntry ::= SEQUENCE { zkClassInfoIndex Integer32, zkClassInfoSex Integer32, zkClassInfoAge Integer32, zkCLassInfoName DisplayString, zkClassInfoAddress DisplayString }
zkClassInfoIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 1}
zkClassInfoSex OBJECT-TYPE SYNTAX Integer32 { man(1), woman(2) } MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 2}
zkClassInfoAge OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 3}
zkCLassInfoName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 4}
zkClassInfoAddress OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 5}
zkClassInfoTable2 OBJECT-TYPE SYNTAX SEQUENCE OF ZkClassInfoEntry2 MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is test table. " ::= {xxx 2}
zkClassInfoEntry2 OBJECT-TYPE SYNTAX ZkClassInfoEntry2 MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is teat entry. " INDEX {zkClassInfoIndex} ::= {zkClassInfoTable2 1}
ZkClassInfoEntry2 ::= SEQUENCE { zkClassInfoSex2 Integer32, zkClassInfoAge2 Integer32, zkCLassInfoName2 DisplayString, zkClassInfoAddress2 DisplayString }
zkClassInfoSex2 OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry2 1} END
XXX-TEST_MIB DEFINITIONS ::= BEGIN IMPORTS enterprises FROM RFC1155-SMI Integer32 FROM SNMPv2-SMI DisplayString FROM SNMPv2-TC;
xxx OBJECT IDENTIFIER ::= {enterprises 40256}
zkClassInfoTable OBJECT IDENTIFIER ::= {xxx 1} zkClassInfoTable2 OBJECT IDENTIFIER ::= {xxx 2}
zkClassInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF ZkClassInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is test table. " ::= {xxx 1}
zkClassInfoEntry OBJECT-TYPE SYNTAX ZkClassInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is teat entry. " INDEX {zkClassInfoIndex} ::= {zkClassInfoTable 1}
ZkClassInfoEntry ::= SEQUENCE { zkClassInfoIndex Integer32, zkClassInfoSex Integer32, zkClassInfoAge Integer32, zkCLassInfoName DisplayString, zkClassInfoAddress DisplayString }
zkClassInfoIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 1}
zkClassInfoSex OBJECT-TYPE SYNTAX Integer32 { man(1), woman(2) } MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 2}
zkClassInfoAge OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 3}
zkCLassInfoName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 4}
zkClassInfoAddress OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry 5}
zkClassInfoTable2 OBJECT-TYPE SYNTAX SEQUENCE OF ZkClassInfoEntry2 MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is test table. " ::= {xxx 2}
zkClassInfoEntry2 OBJECT-TYPE SYNTAX ZkClassInfoEntry2 MAX-ACCESS not-accessible STATUS current DESCRIPTION " This is teat entry. " INDEX {zkClassInfoIndex} ::= {zkClassInfoTable2 1}
ZkClassInfoEntry2 ::= SEQUENCE { zkClassInfoSex2 Integer32, zkClassInfoAge2 Integer32, zkCLassInfoName2 DisplayString, zkClassInfoAddress2 DisplayString }
zkClassInfoSex2 OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION " " ::= {zkClassInfoEntry2 1} END |
CopyRight 2018-2019 实验室设备网 版权所有 |