2011-01-25 30 views
0

net-snmp APIを使用し、mib2cを使用してスケルトンコードを生成すると、テーブルの遅延初期化をサポートできますか?つまり、メンバーのいずれかが直接照会されるまで、テーブルは初期化されません。この理由は、メンバーデータが別のサーバーから取得されているため、他のサーバーをオンライン/要求の準備ができていなくてもsnmpdデーモンを起動できるようにするためです。私はおそらくメンバーが照会されたときに実際の値で更新されるダミーデータでテーブルを初期化することを考えましたが、これが最善の方法かどうかはわかりません。遅延テーブルの初期化

テーブルにも1行のエントリしかないので、mib2c.iterate.confを使用してテーブルイテレータを生成し、そのすべてを処理することは不要です。 MIBで定義されたシーケンスを実際のテーブルではなく実装することを考えましたが、それは通常私が見たすべての例でどのように行われたかではありません。私は/mibgroup/examples/delayed_instance.cを見ましたが、それは私が探しているものではありません。 mib2c.create-dataset.conf設定ファイルでmib2cを使用するのは、私がこれを簡単に動作させるために得た最も近いものでしたが、この設定ファイルはデータが静的で外部的ではないと仮定しています(どちらもどちらも当てはまりません)。それは動作しません。簡単に行えない場合は、テーブルではなくシーケンスを実装するだけですが、簡単な方法があることを期待しています。前もって感謝します。

答えて

1

イテレータメソッドは正常に動作します。 _firstルーチンと_nextルーチンを呼び出すまで、データはロードされません。これらのルーチンと_handlerルーチンでは、リモートサーバーからデータを要求するのはあなた次第です。実際、デフォルトでは、データをまったくキャッシュしないので、リクエストごとにリモートサーバーにクエリを行うことになります。テーブルに大量のデータがある場合は遅くなる可能性があるので、その場合はN秒間のデータを格納するキャッシュを追加することをお勧めします。

+0

大変ありがとうございました。最後に、snmpwalkをテーブルに使用するか、snmptableをテーブルOIDで直接使用すると動作しますが、完全なMIBを処理しようとすると動作しません。それがどうしていいのか? – Matt

+0

これは通常、着信要求のoidがテーブルの前で*を起動していて、正しく処理されていないためです。 IEの場合、テーブルが.1.3.100であっても、mibコードは.1.3.1のGETNEXTを処理できる必要があります。 –

関連する問題