源地址:https://blog.csdn.net/carechere/article/details/51236184

SNMP协议的MIB文件的常见宏定义的描述

对MIB文件中一些常见的宏定义的描述

1.DEFINITIONS ::= BEGIN

SNMP始终使用ASN.1概念中的描述块(module)来组织ASN.1对象的,ASN.1的描述块是一些相关描述语句的集合,module的结构如下

<<module>> DEFINITIONS ::= BEGIN

<<linkage>>

<<declarations>>

END

2.<<basetype>> ::= TEXTUAL-CONVENTION

定义了对标准数据类型的进行扩展的语法

很多MIB定义中都会先定义一些基于标准类型的扩展类型,如:

CiFlowDirection ::= TEXTUAL-CONVENTION

STATUS  current

DESCRIPTION

"The direction of data flow thru a circuit.

transmit(1) - Only transmitted data

receive(2)  - Only received data

both(3)     - Both transmitted and received data."

SYNTAX  INTEGER {

transmit(1),

receive(2),

both(3)

}

CiFlowDirection 是基于INTEGER的枚举类型

3.<<mibname>> MODULE-IDENTITY

该定义添加了一个公共的标示段来对整个信息描述块进行顶层的文字描述,以加强对管理MIB描述块的文档管理和控制,每个MIB定义中都会有该定义。

如:

circuitIfMIB MODULE-IDENTITY

4.OBJECT-IDENTIFIFIER

声明一个节点

如:

atmClpTaggingNoScr  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

关于SNMP的MIB文件的语法简述的更多相关文章

  1. .md文件的语法

    md全称是Macdown,.md文件可以当记事本一样使用,作为编辑软件,还可以自己添加样式,图片,链接等,可以用记事本打开,也可以保持样式排版转换为html文件,语法比较简单..md除了编辑容易的优势 ...

  2. eclipse加速之禁用JS、jsp等文件的语法验证,eclipsejs

    eclipse加速之禁用JS.jsp等文件的语法验证 去除eclipse的JS验证:将windows->preference->Java Script->Validator-> ...

  3. php -l 检查文件是否语法错误

    有时候在进行网页开发的时候,后台文件的语法错误比较难检查出来,这时候使用php -l filename可对文件的语法进行检查.

  4. eclipse *.vm 文件,语法高亮

    eclipse *.vm 文件,语法高亮按如下方式不起作用,原因不明.设置文件打开时使用的编辑器General>>Editors>>File Associations 下述方试 ...

  5. Atom打开txt文件中文乱码解决、指定文件的语法格式、win10中禁止睡眠

    1.Atom中文乱码解决 首先保证打开的txt文件的编码格式为UTF-8无BOM编码格式,可以使用Notepad++更改,如下图所示: 然后再在atom中打开文件,并右键点击文件内容的任意位置,Cha ...

  6. 如果习惯VisualStudio,可以如下实现.Shader文件的语法高亮。

    如果习惯VisualStudio,可以如下实现.Shader文件的语法高亮. 下载作者donaldwu自己添加的关键词文件usertype.dat.其包括了Unity ShaderLab的部分关键字, ...

  7. SNMP mib文件说明

    MIB file的开始和结束 所有的MIB file的都以DEFINITIONS ::= BEGIN关键字开始,以END结束.我们所有添加的节点均应在此之间. XXX-TEST-MIB DEFINIT ...

  8. SNMP与MIB

    简单网络管理协议(SNMP:Simple Network Management Protocol)是一套网络管理协议,注意,SNMP是一个强大的网络管理协议,而不是"简单"的.利用 ...

  9. .md文件 Markdown 语法说明

    Markdown 语法说明 (简体中文版) / (点击查看快速入门) 概述 宗旨 兼容 HTML 特殊字符自动转换 区块元素 段落和换行 标题 区块引用 列表 代码区块 分隔线 区段元素 链接 强调 ...

随机推荐

  1. CentOS6.5中部署java web环境

    原来在linux中部署java web环境,没有做好总结,这次在部署的过程中,将部署的过程做了记录,希望对大家有帮助.主要内容包括CentOS安装以后的网络设置,系统自带jdk的卸载,新版本jdk的安 ...

  2. 记一次令人窒息的线上fullgc调优

    今天第二篇采坑了... ... 现场因为处理太急促没有保留,而且是一旁协助,没有收集到所有信息实在是有些遗憾...只能靠记忆回想一些细节 情况是一台服务器一启动就开始full gc,短短1分钟可以有几 ...

  3. 『宝藏 状态压缩DP NOIP2017』

    宝藏(NOIP2017) Description 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的m 条道路和它们的长度. 小明决 ...

  4. C++版 - 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)

    面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b.(2006年google的一道笔试题.) 分析: 首先应向确认一下是ASCII字 ...

  5. 从锅炉工到AI专家(9)

    无监督学习 前面已经说过了无监督学习的概念.无监督学习在实际的工作中应用还是比较多见的. 从典型的应用上说,监督学习比较多用在"分类"上,利用给定的数据,做出一个决策,这个决策在有 ...

  6. 从无到有-在create-react-app基础上接入react-router、redux-saga

    搭建项目框架 新建项目 执行如下代码,用create-react-app来建立项目的基础框架,然后安装需要用到的依赖. $ npx create-react-app my-test-project $ ...

  7. Chapter 5 Blood Type——13

    "Kryptonite doesn't bother me, either," he chuckled. “氪星石也不会影响我,” 他笑着说道. "You're not ...

  8. 设计模式总结篇系列:装饰器模式(Decorator)

    在面向对象设计过程中,经常会遇到需要对现有的类的功能进行扩展,通常我们可以采用继承的方式.例如老罗最近在做手机,一开始需要定义手机所应具有的功能: interface Phone{ public vo ...

  9. ASP.NET Core多环境配置文件问题

    前言 在我们开发的过程中,往往会有这几个环境,Dev.QA.Pre和Pro. 当然不同的环境可能大家的叫法会有点不一样. 最常遇到的问题,或许就是不同环境的配置文件问题! 一个环境一个配置文件是很常见 ...

  10. [十]JavaIO之FilterInputStream FilterOutputStream

    FilterInputStream  FilterOutputStream都是装饰器模式中的Decorator抽象装饰角色 他们继承了各自的抽象构建InputStream 和OutputStream ...