ページの先頭行へ戻る
Systemwalker Centric Manager/Systemwalker Event Agent トラブルシューティングガイド 監視編
FUJITSU Software

12.5.2 MIB拡張操作を行うとコンパイルに失敗する

対象バージョンレベル

対処1

対処方法

Systemwalker技術情報ホームページで公開されているMIB拡張チェックツールを利用して、拡張MIBファイルのチェックを行ってください。MIB拡張チェックツールには以下の機能があります。

対処2

エラーメッセージ

line nnn: syntax error
last token read was "XXX"
コンパイルに失敗しました

対処方法1

確認ポイント

識別子の記述は正しいですか。

対処方法

識別子には、以下の規約があります。

【例】

《誤》Network OBJECT IDENTIFIER ::= { fujitsu 4 }

《正》network OBJECT IDENTIFIER ::= { fujitsu 4 }

対処方法2

確認ポイント

型の記述は正しいですか。

対処方法

型は、以下の規約があります。

【例】

《誤》grAtmVcStatsEntry OBJECT-TYPE
SYNTAX grAtmVcStatsTableEntry

《正》grAtmVcStatsEntry OBJECT-TYPE
SYNTAX GrAtmVcStatsTableEntry

対処方法3

原因

コンパイル対象がSNMPv2となっていますが、コンパイラがSNMPv1と認識しています。

対処方法

コンパイラは、SNMPv1/SNMPv2の判断を、SNMPv2-SMIがインポートされているかで判断します。コンパイル対象が、SNMPv2で記述されている場合、SNMPv2-SMIをIMPORTSの項目に追加し、拡張する必要があります。

SNMPv1とSNMPv2の詳細な記載方法については、“Systemwalker Centric Manager Q & A集”の“SNMPv2形式の拡張MIBファイルの基本的な文法”と“SNMPv1形式の拡張MIBファイルの基本的な文法”を参照してください。

対処方法4

確認ポイント

1つのファイルに複数のMIB定義が存在していませんか。

対処方法

[DEFINITIONS ::= BEGIN ・・・ END]で囲まれた構文が、1つのファイル中に複数存在する場合、複数のファイルに分割し、[DEFINITIONS ::= BEGIN]の前に記述された文字列(MIB定義)をファイル名として保存(MIB定義.my)後、拡張する必要があります。

【例】

《修正前》
  <sample.txt>
  MIB定義1 DEFINITIONS ::= BEGIN
  ・・・・
  END
  MIB定義2 DEFINITIONS ::= BEGIN
  ・・・・
  END
《修正後》
  <MIB定義1.my>
  MIB定義1 DEFINITIONS ::= BEGIN
  ・・・・
  END

  <MIB定義2.my>
  MIB定義2 DEFINITIONS ::= BEGIN
  ・・・・
  END

対処3

エラーメッセージ

line 999: MODULE-IDENTITY must be invoked at beginning of module
last token read was "END"
コンパイルに失敗しました

原因

SNMP-V2形式の場合に、拡張MIBファイル先頭のオブジェクトの定義が、MODULE-IDENTITY句で始まっていません。

対処方法

V2形式には、必ず“MODULE-IDENTITY”が必要です。

対象となる拡張MIBファイルの先頭のオブジェクトを、“MODULE-IDENTITY”で定義してください。

【例:修正前】

<オブジェクト> OBJECT IDENTIFIER ::= { enterprises 10480 }

【例:修正後】

<オブジェクト> MODULE-IDENTITY
LAST-UPDATED "TEST LAST-UPDATE"
ORGANIZATION "TEST ORGANIZATION"
CONTACT-INFO "TEST CONTACT-INFO"
DESCRIPTION
        "TEST DESCRIPTION"
::= { enterprises 10480 }

対処4

エラーメッセージ

USAGE.MOSY -C -D -I -M DIRECTORY -1 <MIBファイル名>  コンパイルに失敗しました。

原因

MIB拡張操作の対象となるファイルパスに空白が含まれています。

例) C:\Documents and Settings\Administrator\デスクトップ

対処方法

ファイルパスに空白が含まれないディレクトリに対象ファイルを格納しなおした後、MIB拡張操作を行ってください。

Windows版V10.0L10以降、Linux版および、Solaris版10.0以降では発生しません。

対処5

エラーメッセージ

line nnn: unknown token: "_"
last token read was "_"
コンパイルに失敗しました

原因

nnn行目の変数名に'_'が含まれています。

対処方法

変数名から'_'を取り除いてください。

対処6

エラーメッセージ

拡張MIBをコンパイルしています。
Fail to make the MIB file. code = -4 detail = 2 line = nnn

コンパイルに失敗しました。
(nnnは、134~143)

拡張MIBをコンパイルしています。
Fail to make the MIB file. code = -4 detail = 0 line = nnn
コンパイルに失敗しました。
(nnnは、613~626)

拡張MIBをコンパイルしています。
Fail to make the MIB file. code = -4 detail = 0 line = nnnFail to make the MIB file. code = -4 detail = 0 line = nnn
コンパイルに失敗しました。
(nnnは、613~626)

拡張MIBをコンパイルしています。
Fail to make the MIB file. code = -4 detail = 0 line = nnnFail to make the MIB file. code = -4 detail = 2 line = mmm
コンパイルに失敗しました。
(nnnは、613~626、mmmは、134~143)

拡張MIBをコンパイルしています。
Fail to make the MIB file. code = -4 detail = 0 line = nnn
コンパイルに失敗しました。

(nnnは、1139または1143)

原因

コンパイル対象の拡張MIBで、使用しているオブジェクトの参照に失敗した場合、メッセージが出力されます。

対処方法

注意

“Fail to make the MIB file. code = -4 ・・・”のときの、lineの値は、拡張MIBファイルのエラー発生行と異なりますので、注意してください。

対処7

エラーメッセージ

object <オブジェクト名>:
value of ACCESS clause isn't a valid keyword
コンパイルに失敗しました。

原因

ACCESSの属性として、無効なキーワードが指定されました。

対処方法

対処8

エラーメッセージ

object <オブジェクト名>:
value of STATUS clause isn't a valid keyword
コンパイルに失敗しました。

原因

STATUSの属性として、無効なキーワードが指定されました。

対処方法

対処9

エラーメッセージ

line nnn: use MAX-ACCESS not ACCESS
コンパイルに失敗しました。

原因

SNMP-V2形式のオブジェクト定義でACCESS節が指定されました。

対処方法

SNMP-V2形式のオブジェクト定義では、ACCESS節の代わりにMAX-ACCESSを使用してください。

対処10

エラーメッセージ

object <オブジェクト名>:
INTEGER requires either upper-lower bounds or named-number enumerations
コンパイルに失敗しました。

原因

SYNTAX句に“INTEGER”型を指定する場合は、列挙型の値または範囲を指定する必要があります。

対処方法

以下のように指定値の範囲を指定します。

【例:修正前】

SYNTAX INTEGER

【例:修正後】

SYNTAX INTEGER(0..65535)

対処11

エラーメッセージ

object <オブジェクト名>:
value of enumerated INTEGER is zero

原因

MIBファイルがSNMPv1形式の場合に、INTEGER型の列挙型の値に0が設定されました。

対処方法

INTEGER型の列挙型の値に0以外の値を設定してください。

【例:修正前】

<オブジェクト名> OBJECT-TYPE
SYNTAX INTEGER {
enum1(0),
enum2(1)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
""
::= { <オブジェクト> 1 }

【例:修正後】

<オブジェクト名> OBJECT-TYPE
SYNTAX INTEGER {
enum1(1),
enum2(2)
}
ACCESS read-only
STATUS mandatory
DESCRIPTION
""
::= { <オブジェクト> 1 }

対処12

エラーメッセージ

object XXXTable:
    INDEX clause should not be present
object XXXEntry:
    missing INDEX clause
コンパイルに失敗しました。

原因

[発生例]

XXXTable OBJECT-TYPE
SYNTAX SEQUENCE OF XXXEntry
MAX-ACCESS        not-accessible
STATUS    current
DESCRIPTION   ""
INDEX { Index }
::= { XXXInfo 0 }

XXXEntry OBJECT-TYPE
SYNTAX XXXEntry
MAX-ACCESS        not-accessible
STATUS    current
DESCRIPTION   ""
::= {XXXTable 1}

XXXTable:テーブルオブジェクト

XXXEntry:列要素オブジェクト

上記例では、テーブルオブジェクトXXXTableにINDEX句があるため、以下のコンパイルエラーが発生します。

object XXXTable:
    INDEX clause should not be present

また、列要素オブジェクトであるXXXEntryオブジェクトには、INDEX句、または、AUGMENTS句を必ず指定してください。

指定しない場合、以下のコンパイルエラーが発生します。

object XXXEntry:
    missing INDEX clause

対処方法

INDEX句は、列要素オブジェクトで定義し、それ以外のオブジェクトではINDEX句を指定しないでください。また、列要素オブジェクトには必ずINDEX句、またはAUGMENTS句を指定します。

[修正例]

XXXXTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF XXXEntry
    MAX-ACCESS      not-accessible
    STATUS    current
    DESCRIPTION   ""
    ::= { XXXInfo 0 }

XXXEntry OBJECT-TYPE
SYNTAX XXXEntry
    MAX-ACCESS      not-accessible
    STATUS    current
    DESCRIPTION   ""
    INDEX { Index }
    ::= {XXXTable 1}

対処13

原因

すでにコメントのある行をコメントアウトすると、コンパイルエラーになります。

[例:コメントアウト前]

MAX-ACCESS not-accessible -- Comment1

[例:コメントアウト後]

-- MAX-ACCESS not-accessible -- Comment1

→コンパイルエラーが発生。

コメントの文法は、“--”で始まり、次の“--”か、行末までの間をコメントとみなします。

[例:コメントアウト後]の場合、“-- MAX-ACCESS not-accessible --”をコメント、“Comment1”を本文とみなしますので、“Comment1”というオブジェクトがないと判断され、コンパイルエラーが発生します。

対処方法

すでにコメントがある場合は、以下のようにコメントを付加してください。

[修正例]

-- MAX-ACCESS not-accessible -- -- Comment1

対処14

エラーメッセージ

use "TRAP-DEFINITION" not "TRAP-TYPE"

systax error last token read was "{"

原因

TRAP-TYPEマクロが使用されています。

対処方法

TRAP-TYPEマクロをコメントアウトします。

【例:修正前】

  sample TRAP-TYPE
  Reverse mappable trap
   ENTERPRISE sample MIB
   VARIABLES {
   sampleDomain, sampleAddr }
   Status
   current
   DESCRIPTION
   "AAA BBB CCC"
   ::= 1

【例:修正後】

  --sample TRAP-TYPE
  --Reverse mappable trap
  -- ENTERPRISE sampleMIB
  -- VARIABLES {
  -- sampleDomain, sampleAddr }
  -- Status
  -- current
  -- DESCRIPTION
  -- "AAA BBB CCC"
  -- ::= 1

対処15

エラーメッセージ

object <オブジェクト名>:
invalid element in SEQUENCE
コンパイルに失敗しました。

原因

SEQUENCEの中で使用できない型が指定されました。

対処方法

Systemwalker Centric Manager V13.4.0以前では、SEQUENCEの中で BITSを使用することはできません。

BITSを使用している場合はINTEGERに変更してください。