対象バージョンレベル
Systemwalker Centric Manager
Windows版:V5.0L10以降
Solaris版:5.0以降
Linux版:V11.0L10以降
A
SNMPv2形式での拡張MIBの定義方法について説明します。
ここでは以下の形式で説明します。
構文(文法) |
以下の例にある拡張MIBファイルをSystemwalker Centric Manager上で、実際にコンパイルを行った場合、次のように登録されます。
V2-SAMPLE-MIB DEFINITIONS ::= BEGIN -- V2-SAMPLE-MIBという名前の拡張MIBであることを表します。 -- この場合、V13.4.1以前では、ファイル名を、V2-SAMPLE-MIB.myとする必要があります。 -- 拡張MIBの定義は、 -- 拡張MIB名 DEFINITIONS ::= BEGIN -- ・・・ -- 定義 -- ・・・ -- END -- を1つの組として表します。 -- 仮に、1つのファイル中に複数の組が現れる場合、V13.4.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 MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, NOTIFICATION-TYPE, Counter32, Integer32, TimeTicks FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF; -- 外部宣言された定義を使用することを宣言します。 -- IMPORTS -- 定義1, 定義2 FROM 定義1, 定義2が定義されている拡張MIB名 -- 定義3 FROM 定義3が定義されている拡張MIB名 -- 定義4, 定義5 FROM 定義4, 定義5が定義されている拡張MIB名; -- ~~~ ~~~ -- 複数の定義はカンマで区切る。 最後のみ、セミコロンで終了する。 sampleOwn MODULE-IDENTITY LAST-UPDATED "20031217Z" ORGANIZATION "Sample MIB" CONTACT-INFO "PFU2 Phone: +999-999-999 Fax: +999-999-999 Email: xxx@domain_name" DESCRIPTION "description1" REVISION "20031218Z" DESCRIPTION "revision1: xxx" REVISION "20031219Z" DESCRIPTION "revision2: yyy" ::= { enterprises 100 } -- sampleOwnを定義しています。 -- SMI-V2形式の場合、最初の定義は、定義の先頭(IMPORT句の直後)に、 -- 必ず、MODULE-IDENTITY句にて行う必要があります。 -- 名前は、次のルールに従う必要があります。 -- 小文字の英字で始まる、英数字文字列でなければなりません。 -- -を使ってはいけません。 -- ユニークな名前でなければなりません。 -- MODULE-IDENTITY句で定義を行う場合、以下の属性は必須となります。 -- ・ LAST-UPDATED -- ・ ORGANIZATION -- ・ CONTACT-INFO -- ・ DESCRIPTION -- ※ 属性の定義順を入れ替えることはできません。 -- 必ず、この順番で定義してください。 -- また、各属性に記述する値はダブルクォーテーションで囲む必要があります。 -- また、任意で -- ・ REVISION -- ・ DESCRIPTION -- ※ 属性の定義順を入れ替えることはできません。 -- 必ず、この順番で定義してください。 -- また、各属性に記述する値はダブルクォーテーションで囲む必要があります。 -- を1組として更新履歴を付加することができます。 -- -- ::= { enterprises 100 }は、 -- sampleOwnの識別子は、enterprises.100であるということを表し、 -- enterprisesの下にsampleOwnが100という識別子で存在することを示します。 -- enterprisesの識別子は、1.3.6.1.4.1ですので、 -- sampleOwnは、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) -- という階層構造になります。 -- -- MODULE-IDENTITY句のより詳細な説明は、RFC1442を参照してください。 sampleChild1 OBJECT IDENTIFIER ::= { sampleOwn 10 } -- sampleOwnの子として、sampleChild1を定義します。 -- sampleChild1の識別子は、sampleOwn.100であるとしています。 -- 1.3.6.1.4.1.100.10と表すこともできます。 -- -- 定義する名前は、次のルールに従う必要があります。 -- 小文字の英字で始まる、英数字文字列でなければなりません。 -- -を使ってはいけません。 -- ユニークな名前でなければなりません。 -- -- OBJECT IDENTIFIER句のより詳細な説明は、RFC1155を参照してください。 SampleString ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "this type is string for sample" SYNTAX OCTET STRING (SIZE (0..127)) -- TEXTUAL-CONVENTION句により、独自の型を定義することができます。 -- ここでは、サイズ127のOCTET-STRING型と同じ意味を持つ、SampleString型を定義しています。 -- TEXTUAL-CONVENTION句で定義を行う場合、 -- 以下の属性は必須となります。 -- ・ STATUS -- ・ DESCRIPTION -- ・ SYNTAX -- ※ 属性の定義順を入れ替えることはできません。 -- 必ず、この順番で定義してください。 -- 各属性については、sampleObjectの説明にて、より詳細な説明が記載してあります。 -- TEXTUAL-CONVENTION句にて定義される名前は、次のルールに従う必要があります。 -- 大文字の英字で始まる、英数字およびハイフン(-)で構成される文字列でなければなりません。 -- ユニークな名前でなければなりません。 -- -- TEXTUAL-CONVENTION句のより詳細な説明は、RFC1443を参照してください。 SampleStatus ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "this type is enumlation for sample" SYNTAX 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 Integer32 MAX-ACCESS read-only STATUS current 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 INTEGER -- 基本的には、Integer32と同一ですが、列挙型を表す場合や、 -- Integer32をより抑制して使いたい場合に用いられます。 -- SYNTAX INTEGER(0..255)のように、サイズ指定を行う必要があり、 -- サイズ指定を省略するとコンパイルエラーとなります。 -- 列挙型を表す場合、 -- SYNTAX INTEGER { -- enum1(1), -- enum2(2), -- enum3(5) -- } -- とします。 -- このとき、enum1(値は1), enum2(値は2), enum3(値は5)のいずれかを -- とる型になります。 -- ・SYNTAX OCTET STRING -- 任意のバイナリデータ・テキストデータを取り扱うことを表します。 -- SYNTAX OCTET STRING (SIZE (0..127))とすることにより、 -- 長さを規定することができます。(この例ですと、0~127文字) -- ・SYNTAX BITS -- ビットの集合を取り扱うことを表します。V13.0.0以前では、、コンパイル -- エラーとなります。 -- INTEGER型で代用してください。( SYNTAX BITS -> SYNTAX INTEGER ) -- ・SYNTAX Counter32 -- Counter32は値が上限を超えた場合にゼロに戻り、増加することのみを前提とした -- 0~2^32-1(4294967295)の整数を取り扱うことを表します。 -- この場合、MAX-ACCESSはread-onlyでなければなりません。 -- SYNTAX Counter32(0..255)とした場合、とり得る値は、0~255として指定できます。 -- ・SYNTAX Gauge32 -- 負でない整数(それは増加するかもしれないし減少するかもしれない)であり、最大の値を -- 超過しない0~2^32-1(4294967295)の整数を取り扱うことを表します。 -- ・SYNTAX Counter64 -- Counter64は値が上限を超えた場合にゼロに戻り、増加することのみを前提とした -- 0~2^64-1の整数を取り扱うことを表します。 -- ・SYNTAX UInteger32 -- 0~4294967295の間の整数を取り扱うことを表します。 -- SYNTAX UInteger32(0..255)とした場合、とり得る値は、0~255として指定できます。 -- ・その他 -- ここでは、基本的なもののみをピックアップして説明してありますので、 -- 上記以外の型を指定することができます。 -- ・ MAX-ACCESS -- オブジェクトのアクセス権を定義します。 -- 指定できる値は、 -- ・not-accessible -- ・read-only -- ・read-write -- ・read-create -- のいずれかになります。 -- ・ STATUS -- オブジェクトの状態を定義します。 -- 指定できる値は、 -- ・current -- ・obsolete -- ・deprecated -- のいずれかになります。 -- ・ DESCRIPTION -- オブジェクトの定義を表します。 -- ダブルクォーテーションで囲まれた範囲に記述します。 -- 例) "xxxxxxxxxxxxxxxxxxxxxxxxxx -- yyyyyyyyyyyyyyyyyyyyyyyyyy" -- ※ 属性の定義順を入れ替えることはできません。 -- 必ず、この順番(SYNTAX,MAX-ACCESS,STATUS,DESCRIPTIONの順)で定義してください。 -- -- OBJECT-TYPE句のより詳細な説明は、RFC1442を参照してください。 sampleTable OBJECT-TYPE SYNTAX SEQUENCE OF SampleEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "" ::= { sampleGrandChild2 1 } -- sampleTableは、テーブル型のオブジェクトとして定義されます。 -- このテーブルを構成するメンバは、"SYNTAX SEQUENCE OF"にて定義されます。 -- この場合ですと、SampleEntryが構成するメンバの型を表します。 -- SampleEntryは、下記にて、entryIndexとentrySourceを含むことが定義されています。 -- ::= { sampleGrandChild2 1 }は、sampleTableがsampleGrandChild2の1階層下に1という識別子で -- 存在することを示します。 sampleStatusEntry OBJECT-TYPE SYNTAX SampleEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "" INDEX { entryIndex } ::= { sampleTable 1 } -- sampleStatusEntryは、SampleEntry型のオブジェクトとして定義されます。 -- 上で定義したsampleTableに含まれるメンバになります。 -- INDEX節により、各メンバの識別情報を定義します。 -- ここでは、SampleEntryのメンバである、entryIndexが識別情報を表すことになります。 -- ::= { sampleTable 1 }は、sampleStatusEntryがsampleTableの1階層下に1という識別子で -- 存在することを示します。 SampleEntry ::= SEQUENCE { entryIndex Integer32, entrySource OCTET STRING } -- SEQUENCEにより、テーブルの構成を定義します。 -- 文法は次のようになります。 -- <EntryType> ::= SEQUENCE { <type1>, ... , <typeN> } -- ここでは、sampleTableに含まれるメンバの型を表すSampleEntryを定義しています。 -- SampleEntryは、entryIndexとentrySourceというメンバで構成されます。 -- SEQUENCEにて定義される名前は、次のルールに従う必要があります。 -- 大文字の英字で始まる、英数字およびハイフン(-)で構成される文字列でなければなりません。 -- ユニークな名前でなければなりません。 -- -- より詳細な説明は、RFC1442を参照してください。 entryIndex OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "" ::= { sampleStatusEntry 1 } -- SampleEntryを構成するメンバであるentryIndexを定義します。 -- sampleStatusEntryの1階層下に1という識別子で存在することを示します。 entrySource OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-create STATUS current DESCRIPTION "" ::= { sampleStatusEntry 2 } -- SampleEntryを構成するメンバであるentrySourceを定義します。 -- sampleStatusEntryの1階層下に2という識別子で存在することを示します。 END -- このENDは、拡張MIBの定義の終わりを表します。 |
注意
この拡張MIBファイルはサンプルであり、実際にコンパイルを行うこと、および、運用環境で使用されることを想定したものではございません。
この拡張MIBファイルに対してコンパイルを行った場合、および、実運用で使用したことにより発生する問題については一切責任を負いかねますので予めご了承ください。