5

net-snmp Web サイトの指示に従って、独自の MIB サポートをマスター エージェントに追加しました。

これが私がしたことです:

  1. サポート .c および .h ファイルを net-snmp/agent/mibgroup/ フォルダーに作成しました。
  2. MIB ファイルを /usr/local/share/snmp/mibs/ フォルダーにコピーしました。
  3. 「./configure --with-mib-modules="myMib"」を実行しました
  4. 「make」と「make install」を実行しました
  5. 「snmpd -f -Le -d -c snmpd.conf &」でsnmpdを起動しました
  6. snmpdtranslte コマンドを実行すると、MIB 構造を確認できます。しかし、snmpget -v2c -c public "MY-MIB-FILE::myVariable" を使用しようとすると、"*** = No such object available on this agent at this OID" というメッセージが表示され続けます。

チュートリアルに書かれていることを正確に実行snmpgetsnmpsetたので、NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject例を実行できます。

ここで見逃したものを理解するのを手伝ってください。

4

5 に答える 5

7

"No such object available on this agent at this OID" は、netsnmpd に関する限り、そのツリーに対応する OID がないことを示します。

の成功に惑わされないでくださいsnmptranslate。Snmptranslate は MIB ファイル自体でのみ動作し、snmp サーバーへのアクセスはまったく必要ありません。したがって、snmptranslate が MIB の詳細を正しく表示するという事実は、mib が正しくコピーされていること、またはファイル (など)$MIBDIRSにリストされているディレクトリであることを示しています。.snmp/snmp.conf

チュートリアルに従っていると仮定すると、実装した mib は単一のスカラー変数を提供します。スカラー変数には、 のインデックス (つまり、接尾辞) が付けられます.0。次のコマンドのいずれかを実行してみてください。


snmpget -v2c -c public MY-MIB-FILE::myVariable.0

または:


snmpwalk -v2c -c public MY-MIB-FILE::myVariable

後者は、そのOIDの下にあるすべてのMIBリーフのリストを提供します。これには(あなたの場合).0ノードが含まれます。

それが失敗した場合は、コードがコンパイルされ、正しく実行されていることを確認する価値があります。まず、ステップの最後にある詳細をチェックし./configureて、概要に mib が含まれていることを確認します。例えば。(./configure --with-mib-modules="nstAgentModuleObject" からの結果):


---------------------------------------------------------
            Net-SNMP configuration summary:
---------------------------------------------------------

  SNMP Versions Supported:    1 2c 3
  Net-SNMP Version:           5.4.1
  Building for:               linux
snip
  Agent MIB code:             nstAgentModuleObject default_modules =>  snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
snip
---------------------------------------------------------

前者の場合nmsnmpd 実行可能 agent/.libs/libnetsnmpmibs.soファイルを実行init_X()して、MIB に対応する関数が存在することを確認できます。init_nstAgentModuleObject()関数が存在することを確認することも価値があります。make installテストする前に実行している場合lddは、使用されている libnetsnmpmibs.so ライブラリがビルドしたばかりのものであり、パスの問題がないことを ( を使用して) 確認する価値があります。

DEBUGMSGTL()関数内に呼び出しを追加することで、組み込みのデバッグ メッセージング システムを使用できますinit_X()。デバッグ メッセージを表示するには-DALL、snmpd コマンド ラインにオプションを追加します。

于 2012-04-03T03:32:28.030 に答える
2

このメッセージNo Such Object available on this agent at this OIDは、エージェントが要求された MIB オブジェクトをまったくサポートしていない場合、またはインデックスまたはインスタンス変数が指定されていない場合に発生します。

リンク先のチュートリアルから、コミュニティ ストリング public に関連する設定を追加しましたか?

例えば

ここで詳しく説明されているように、snmpconf を実行します。

こちらの「初心者とデバッグのヒント」セクションに記載されている構成の変更も参照してください

また、変数に指定されたインデックスまたはインスタンスがないようです

snmpget -v2c -c public MY-MIB-FILE::myVariable.0.

にない場合に備えて、マスター エージェントが実行されるホストとポートを明示的に指定することもできますsnmpd.conf

于 2012-03-31T16:42:54.330 に答える
1

ldd私の場合snmpd、標準のUbuntulibnetsnmpmibs.soと動的にリンクされていて、同じチュートリアルにも従いましたが、カスタムMIBサポートを取得できませんでした。

動的リンクを修復し、すべてがうまくいきました!

于 2014-12-25T15:09:55.827 に答える