2011-02-03 25 views
5

私はMIBからSNMPマネージャとシミュレートされたSNMPエージェントを作成しています(マネージャをテストするため)。私はマネージャーが行を追加/削除できるはずの、以下のようなテーブルを持っています。 RowStatusを使用してこれを行う通常の方法は何ですか? RowStatusが最初に設定されていますか?他のOIDをPDUに含めることはできますか?RowStatusの使い方は?

私の最初の使用例は、起動時にテーブルが空であることです。したがって、私がこのようなSET PDUを送信した場合:

createStuffEntry.1.1.1 = 1 
createStuffEntry.2.1.1 = 1 
createStuffEntry.3.1.1 = 99 
createStuffEntry.4.1.1 = "Dustbunnies" 
createStuffEntry.5.1.1 = 5 

以下の定義に該当するはずですか? cRowStatusを省略した場合、どうなりますか?

createStuffTable OBJECT-TYPE 
    SYNTAX SEQUENCE OF CreateStuffEntry 
    ACCESS not-accessible 
    STATUS mandatory 
    DESCRIPTION 
      "A table for creating stuff." 
    ::= { parentGroup 1 } 

createStuffEntry OBJECT-TYPE 
    SYNTAX CreateStuffEntry 
    ACCESS not-accessible 
    STATUS mandatory 
    DESCRIPTION 
      "An entry for building a stuff to create." 
    INDEX { cPlanID, cID } 
    ::= { createStuffTable 1 } 

CreateStuffEntry ::= 
    SEQUENCE { 
     cPlanID 
      INTEGER, 
     cID 
      INTEGER, 
     cTemplateID 
      INTEGER, 
     cStuffName 
      DisplayString, 
     cRowStatus 
      RowStatus 
    } 

cPlanID OBJECT-TYPE 
    SYNTAX INTEGER 
    ACCESS read-write 
    STATUS mandatory 
    DESCRIPTION 
      "The plan ID (cpPlanID)" 
    ::= { createStuffEntry 1 } 

cID OBJECT-TYPE 
    SYNTAX INTEGER 
    ACCESS read-write 
    STATUS mandatory 
    DESCRIPTION 
      "The table entry index." 
    ::= { createStuffEntry 2 } 

cTemplateID OBJECT-TYPE 
    SYNTAX INTEGER 
    ACCESS read-write 
    STATUS mandatory 
    DESCRIPTION 
      "The ID of the stuff template to create this stuff from." 
    ::= { createStuffEntry 3 } 

cStuffName OBJECT-TYPE 
    SYNTAX DisplayString 
    ACCESS read-write 
    STATUS mandatory 
    DESCRIPTION 
      "The stuff name." 
    ::= { createStuffEntry 4 } 


cRowStatus OBJECT-TYPE 
    SYNTAX RowStatus 
    ACCESS read-write 
    STATUS current 
    DESCRIPTION 
     "This OID uses six main statuses: 
     active(1)   is in use and available in stuffTable 
     notinService(2) it is present but not yet created 
     notReady(3)  it is present but missing info 
     createAndGo(4) create stuff in stuffTable. Row will be 
          added to this table if necessary. 
     createAndWait(5) add stuff row to this table 
     destroy(6)  will remove the stuff row 

     This OID is used to add/remove rows for stuff creation. 
     It can also be used to determine if a stuff has been 
     created successfully." 
    ::= { createStuffEntry 5 } 

注これはと同様の定義されたタイプのようなRowStatusを用いてSMI V1がMIBは、hereに記載されています。したがって、ここで述べるのではなく、読み込み作成を暗示します。

答えて

3

実際にRowStatusのテキスト形式では、エージェントの実装方法にかなりの余裕があります。したがって、管理者は、これらの方法の両方をサポートしなければならないし、薬剤は一つだけをサポートしなければならない(が、2つをサポートすることができる):

  1. 連続したPDU:
    1. 行セットの状態変数「createAndWaitに」
    2. に行状況変数が「アクティブ」
  2. は「createAndGo」に列ステータス変数を設定し、**すべてが含まれるように設定します(1つのPDUまたは多数に)設定したいすべての列
  3. **変数を設定しますあなたはねdを1つのPDUに設定する

残念ながら、マネージャはインテリジェントであり、いずれかをサポートするエージェントと話をする方法を知っている必要があります。一般的な考え方は、管理者はより大きく、小柄なエージェントよりも問題を回避する余地があるということです。多くの小型デバイスは#2をサポートしています。

+0

#2では、エージェントは、行ステータス変数がPDUに最初にロードされることを期待していますか?それは問題だろうか? –

+2

** **重要ではありませんが、私が長年にわたって学んだことの1つは、ルールに従わないコードを書いて、そうしてはならないと期待しているということです。だから...私はそれを最初に置くだろう。何人かのエージェントがそれを期待しているからだ。 –

+1

私はNortelのSNMPエージェントに対処しなければなりませんでした。これはスカラーオブジェクトと円柱オブジェクトとエンタープライズATMスイッチを停止させる可能性のあるシスコのエージェントを区別できませんでした。 SNMPはかなりシンプルで、実装者がRFCを実際に読んでいる人はほとんどいません。 –