ページのトップに戻る
Systemwalker Centric Manager/Systemwalker Event Agent Q&A集

7.11 Q:SNMPv1形式の拡張MIBファイルの基本的な文法

対象バージョンレベル

A

SNMPv1形式での拡張MIBの定義方法について説明します。

ここでは以下の形式で説明します。

構文(文法)
-- コメント(構文(文法)の説明)

以下の例にある拡張MIBファイルをSystemwalker Centric Manager上で、実際にコンパイルを行った場合、次のように登録されます。

登録される情報は「SNMPv2形式の拡張MIBファイルの基本的な文法を教えてください」で掲載したサンプルをコンパイルした結果と同じになります。

V1-SAMPLE-MIB DEFINITIONS ::= BEGIN
-- V1-SAMPLE-MIBという名前の拡張MIBであることを表します。
-- この場合、ファイル名は、V1-SAMPLE-MIB.myとする必要があります。
-- 拡張MIBの定義は、
--     拡張MIB名 DEFINITIONS ::= BEGIN
--        ・・・
--        定義
--        ・・・
--     END
-- を1つの組として表します。
-- 仮に、1つのファイル中に複数の組が現れる場合、事前に複数のファイルに
-- 分割する必要があります。
-- たとえば、1つのファイル内に以下のような定義がある場合、
--        MIB1 DEFINTIONS ::= BEGIN
--            ・・・
--            定義
--            ・・・
--        END
--        MIB2 DEFINTIONS ::= BEGIN
--            ・・・
--            定義
--            ・・・
--        END
-- MIB1.myとMIB2.myの2つのファイルに分けます。
--     MIB1.my
--           MIB1 DEFINTIONS ::= BEGIN
--               ・・・
--               定義
--               ・・・
--           END
--     MIB2.my
--           MIB2 DEFINTIONS ::= BEGIN
--                ・・・
--                定義
--                ・・・
--           END

     IMPORTS
            OBJECT-TYPE         FROM RFC-1212;

--   外部宣言された定義を使用することを宣言します。
--     IMPORTS
--           定義1, 定義2   FROM 定義1, 定義2が定義されている拡張MIB名
--           定義3          FROM 定義3が定義されている拡張MIB名
--           定義4, 定義5   FROM 定義4, 定義5が定義されている拡張MIB名;
--               ~~~                                                 ~~~
--      複数の定義はカンマで区切る。                     最後のみ、セミコロンで終了する。

sampleOwn OBJECT IDENTIFIER ::= { enterprises 100 }
--   enterprisesの子として、sampleOwnを定義します。
--   sampleOwnの識別子は、enterprises.100であるとしています。
--   1.3.6.1.4.1.100と表すこともできます。
--
--   定義する名前は、次のルールに従う必要があります。
--           小文字の英字で始まる、英数字文字列でなければなりません。
--           -を使ってはいけません。
--           ユニークな名前でなければなりません。
--   enterprisesは
--   iso(1)-org(3)-dod(6)-internet(1)-private(4)-enterprises(1)
--   という階層構造をとっていますので、
--   sampleOwnは
--   iso(1)-org(3)-dod(6)-internet(1)-private(4)-enterprises(1)-sampleOwn(100)
--   という階層構造になります。
--   OBJECT IDENTIFIER句のより詳細な説明は、RFC1155を参照してください。


 sampleChild1 OBJECT IDENTIFIER ::= { sampleOwn 10 }
--   sampleOwnの子として、sampleChild1を定義します。
--   sampleChild1の識別子は、sampleOwn.100であるとしています。
--   1.3.6.1.4.1.100.10と表すこともできます。


 SampleString ::= OCTET STRING (SIZE (0..127))
--   独自の型を定義することができます。
--   ここでは、サイズ127のOCTET-STRING型と同じ意味を持つ、SampleString型を定義しています。
--   大文字の英字で始まる、英数字およびハイフン(-)で構成される文字列でなければなりません。
--   ユニークな名前でなければなりません。


 SampleStatus ::= INTEGER {
     status1(1),
     status2(2),
     status3(3),
     status4(4)
}
--   ここでは、status1/status2/status3/status4のいずれかの整数をとる、
--   SampleStatus型を定義しています。


 sampleGrandChild1       OBJECT IDENTIFIER ::= { sampleChild1 1 }
 sampleGrandChild2       OBJECT IDENTIFIER ::= { sampleChild1 2 }
 sampleGrandChild3       OBJECT IDENTIFIER ::= { sampleChild1 10 }
--   ここでは、sampleChild1の1階層下に、sampleGrandChild1/sampleGrandChild2/sampleGrandChild3
--   を定義しています。


 sampleObject OBJECT-TYPE
     SYNTAX     INTEGER
     ACCESS     read-only
     STATUS     mandatory
     DESCRIPTION
         "this is sample object."
     ::= { sampleGrandChild1 1 }
--   OBJECT-TYPE句により、オブジェクトを定義することができます。
--   ::= { sampleGrandChild1 1 }では、sampleGrandChild1の1階層下に
--   1という識別子で、sampleObjectを作成することを示します。
--   OBJECT-TYPE句により定義される名前は、次のルールに従う必要があります。
--         小文字の英字で始まる、英数字およびハイフン(-)で構成される文字列でなければなりません。
--         ユニークな名前でなければなりません。
--
--   OBJECT-TYPE句で定義を行う場合、以下の属性は必須となります。
--      ・ SYNTAX
--            オブジェクトのデータ構造を定義します。
--            ・SYNTAX Integer32
--                  -2147483648~2147483647の間の整数を取り扱うことを表します。
--                  SYNTAX Integer32(0..255)とした場合、とり得る値は、0~255として指定できます。
--            ・SYNTAX OCTET STRING
--                  任意のバイナリデータ・テキストデータを取り扱うことを表します。
--                  SYNTAX     OCTET STRING (SIZE (0..127))とすることにより、
--                  長さを規定することができます。(この例ですと、0~127文字)
--            ・SYNTAX INTEGER
--                  基本的には、Integer32と同一ですが、列挙型を表す場合や、
--                  Integer32をより抑制して使いたい場合に用いられます。
--                  SYNTAX INTEGER(0..255)のように、サイズ指定を行う必要があり、
--                  サイズ指定を省略するとコンパイルエラーとなります。
--                  列挙型を表す場合、
--                  SYNTAX INTEGER {
--                      enum1(1),
--                      enum2(2),
--                      enum3(5)
--                  }
--                  とします。
--                  このとき、enum1(値は1), enum2(値は2), enum3(値は5)のいずれかを
--                  とる型になります。
--            ・SYNTAX BITS
--                  SNMP-V2形式では、コンパイルエラーとなりますが、SNMP-V1形式では、
--                  コンパイルエラーにはなりませんが、SNMP-V2同様、使用しないようにしてください。
--                  INTEGER型で代用してください。( SYNTAX BITS -> SYNTAX INTEGER )
--            ・その他
--                  基本的には、SNMP-V2で使用できるものでは、コンパイルエラーは発生しません。
--      ・ ACCESS
--            オブジェクトのアクセス権を定義します。
--            指定できる値は、
--                  ・not-accessible
--                  ・read-only
--                  ・read-write
--                  ・read-create
--            のいずれかになります。
--      ・ STATUS
--            オブジェクトの状態を定義します。
--            指定できる値は、
--                  ・mandatory
--                  ・deprecated
--                  ・optional
--                  ・obsolete
--            のいずれかになります。
--      ・ DESCRIPTION
--            オブジェクトの定義を表します。
--            ダブルクォーテーションで囲まれた範囲に記述します。
--                 例) "xxxxxxxxxxxxxxxxxxxxxxxxxx
--                      yyyyyyyyyyyyyyyyyyyyyyyyyy"
--      ※ 属性の定義順を入れ替えることはできません。
--         必ず、この順番(SYNTAX,ACCESS,STATUS,DESCRIPTIONの順)で定義してください。
--
--   OBJECT-TYPE句のより詳細な説明は、RFC1212を参照してください。


 sampleTable OBJECT-TYPE
     SYNTAX     SEQUENCE OF SampleEntry
     ACCESS     not-accessible
     STATUS     mandatory
     DESCRIPTION
         ""
     ::= { sampleGrandChild2 1 }
--   sampleTableは、テーブル型のオブジェクトとして定義されます。
--   このテーブルを構成するメンバは、"SYNTAX  SEQUENCE OF"にて定義されます。
--   この場合ですと、SampleEntryが構成するメンバを表します。
--   SampleEntryは、下記にて、entryIndexとentrySourceを含むことが定義されています。
--   ::= { sampleGrandChild2 1 }は、sampleTableがsampleGrandChild2の1階層下に1という識別子で
--   存在することを示します。


 sampleStatusEntry OBJECT-TYPE
     SYNTAX     SampleEntry
     ACCESS      not-accessible
     STATUS     mandatory
     DESCRIPTION
         ""
     INDEX { entryIndex }
     ::= { sampleTable 1 }
--   sampleStatusEntryは、上で定義しましたsampleTable型のオブジェクトであり、かつ、
--   配列型のオブジェクトであることを表します。
--   (つまり、sampleTable配列型)
--   INDEX節により、この配列の各要素の識別情報を定義します。
--   ここでは、SampleEntryのメンバである、entryIndexが識別情報を表すことになります。
--   ::= { sampleTable 1 }は、sampleStatusEntryがsampleTableの1階層下に1という識別子で
--   存在することを示します。


 SampleEntry ::= SEQUENCE {
     entryIndex                INTEGER,
     entrySource               OCTET STRING
 }
--   SEQUENCEにより、テーブルの構成を定義します。
--   文法は次のようになります。
--           <EntryType> ::= SEQUENCE { <type1>, ... , <typeN> }
--   ここでは、sampleTableの型を表すSampleEntryを定義しています。
--   SampleEntryは、entryIndexとentrySourceというメンバで構成されます。
--   SEQUENCEにて定義される名前は、次のルールに従う必要があります。
--           大文字の英字で始まる、英数字およびハイフン(-)で構成される文字列でなければなりません。
--           ユニークな名前でなければなりません。
--
--   より詳細な説明は、RFC1155を参照してください。


 entryIndex OBJECT-TYPE
     SYNTAX     INTEGER
     ACCESS     read-only
     STATUS     mandatory
     DESCRIPTION
         ""
     ::= { sampleStatusEntry 1 }
--   SampleEntryを構成するメンバであるentryIndexを定義します。
--   sampleStatusEntryの1階層下に1という識別子で存在することを示します。

 entrySource OBJECT-TYPE
     SYNTAX     OCTET STRING
     ACCESS     read-create
     STATUS     mandatory
     DESCRIPTION
         ""
     ::= { sampleStatusEntry 2 }
--   SampleEntryを構成するメンバであるentrySourceを定義します。
--   sampleStatusEntryの1階層下に2という識別子で存在することを示します。

END
-- このENDは、拡張MIBの定義の終わりを表します。

注意

この拡張MIBファイルはサンプルであり、実際にコンパイルを行うこと、および、運用環境で使用されることを想定したものではございません。

この拡張MIBファイルに対してコンパイルを行った場合、および、実運用で使用したことにより発生する問題については一切責任を負いかねますので予めご了承ください。