關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM