2

net-snmpを使用してさまざまなMIBSのリストを表示し、SNMPツリー構造に関連するその他の情報を表示したいと思います。

これで、顧客のSMIv1 MIBSはリストに表示されませんが、net-snmpによって正しくロードされていることがわかりました。

サンプルのnet-snmpコードは、メモリ内のMIB構造を通過し、ツリー内のMIBとMODULE-IDENTITYノートの間にSMIv2全単射があることを前提としています。したがって、MODULE-IDENTITYノードを見つけると、MIBが見つかります。

net-snmpを使用してSMIv1MIBSを一覧表示する正しい方法を知っている人はいますか?(または任意の回避策?)

  // Read mibs and obtain memory structures
  struct tree * head = read_all_mibs();
  // Walk down the SNMP tree
  for ( struct tree * tp = head; tp; tp = tp->next_peer )
  {
     // Module-indentity
     if ( tp->type == TYPE_MODID )
     {
        // XXX We found a SMIv2 MIB, but SMIv1 MIBs have no MODULE-IDENTITY node
     }
  }

注意:コンバーターのsmidump(コマンドラインツール、またはhttp://www.ibr.cs.tu-bs.de/projects/libsmi/tools/のWebサービスとして)を見つけましたが、MODULEを追加しません- MIBへのIDENTITYノード。

編集:古いSNMP MIBをより新しいもの(SMIv2スタイル)に変換するツールであれば、問題を解決できることに注意してください。その特定の方向に何か助けはありますか?

1つの提案は、MODULE-IDENTIFIERがない場合に、MIBのルートOBJECT-IDENTIFIERを見つけることです(MIBは、多くの異なる無関係な場所にノードを追加するため、これは機能しません)。ルートノードを使用すると、そのMIBに関連するツリーのほとんどを表示できます。

4

3 に答える 3

0

同僚と私が問題を修正するために見つけた唯一の解決策は、「トップレベル」のMIBをよりSNMPv2のような構造に変換することでした。つまり、1)タイプMODULE-IDENTITYをインポートし、2)最上位ノードをMODULE-IDENTITY宣言に置き換えます。

    ...
    IMPORTS
       MODULE-IDENTITY
       FROM
       SNMPv2-SMI
    ...

    -- Removed top-level node
    --    compaq              OBJECT IDENTIFIER ::= { enterprises 232 }

    -- Add a fake module-identity node
    compaq MODULE-IDENTITY
    LAST-UPDATED   "200111120000Z"
    ORGANIZATION   "COMPAQ"
    CONTACT-INFO
           "why.still.using.snmpv1@compaq.com"
    DESCRIPTION
           "why does compaq still provide these mibs in 2013?"
    REVISION       "9407210000Z"
    DESCRIPTION
           "Normal fixed MIB module."
    ::= { enterprises 232 }

この修正により、net-snmp他のすべてのSNMPv2 mibと同様に、ライブラリにMIBのモジュールIDノードが表示されます。

于 2013-03-08T09:36:02.167 に答える
0

UDPデータグラムを使用します。net-snmpまたはsnifUDPトラフィックのソースを取得できます(より簡単な方法のように見えます)。

于 2012-09-30T23:16:11.893 に答える
0

net-snmpは、デバイス上でsnmpを実行しているエージェント(つまりサーバー)です。どのクライアント(つまり、mibブラウザまたはsnmp-get / walkなどのコマンドラインツール)を使用してクエリを実行していますか?クライアントにもサーバーと同じMIBがロードされていますか?

SNMPv1を使用していると思います。正しいアクセスコミュニティを使用していますか?つまり、クライアント(MIBブラウザまたはコマンドラインsnmpクライアント)から正しいパスワードを入力して、SNMPエージェント/サーバーで認証していますか?

問題を特定するには、GUIベースのクライアント(SNMPマネージャーと呼ばれる)を使用することをお勧めします。MGSOftMIBBrowserなど

試用版は無料です。また、パスワードの失敗(snmpv1のコミュニティ名)などの試行の結果が表示されます。

他のいくつかの考えられる問題の中には、次のようなものがあります。

SMIv1は古い形式です。したがって、使用しているnet-snmpのバージョンがそれをサポートしていることを確認する必要があります。

SNMPv2を使用している場合は、正しいコミュニティで認証している可能性があります。ただし、コミュニティには、表示したいmibの読み取りアクセス権がありません。SNMPv2では、oidツリーの特定のサブセットを特定のコミュニティ(ユーザー)に表示できるようにするビューの概念が導入されました。

非標準のMIBである場合(つまり、コアsnmp mibの一部ではない場合)、完全なOID(1.3.4.1.2 ...など)であることがわかり、最初にGUI(MIBブラウザー)で存在するかどうかを確認する必要があります。それ以外の場合は、特定のoidに対してgetリクエストをデバッグします。

また、非標準のmibをエージェントとクライアントの両方にロードする必要があることも理解してください。そうしないと、クライアントはmibの詳細を知らず、代わりにリクエストを照会できるようになります。

于 2012-10-01T04:35:35.667 に答える