zoukankan      html  css  js  c++  java
  • 关于SNMP的MIB文件的语法简述

    源地址: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下的一个唯一对象标识符。

    其编译后的视图为:

     blog.csdn.net/shanzhizi

     


    标量节点

    在每一个树支下,可以定义被管理资源的管理对象,其中一类是标量节点(直观地看象树叶的节点)。利用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

  • 相关阅读:
    static_cast与dynamic_cast的联系与区别
    ActiveX控件实现
    Foundation: Rapid Prototyping and Building Framework from ZURB
    Python datetime / time conversions « SaltyCrane Blog
    Extending Django’s database API to include fulltext search
    解决linux下/etc/rc.local开机器不执行的原因。
    巧用 /etc/rc.local,开机时完成一些自动任务 GNU/Linux,Windows的終結者 KM大宝 和讯博客
    Kill process by name in python Stack Overflow
    Linux iostat监测IO状态
    An Introduction to Python: File I/O
  • 原文地址:https://www.cnblogs.com/braveCloud/p/10029161.html
Copyright © 2011-2022 走看看