2

実際、sysSwYear を MIBNODE として指定して .h & .c ファイルを生成しようとしており、次のコマンドを使用しています。

mib2c -c mib2c.scalar.conf sysSwYear

しかし、次のエラーが発生します。

そもそもmib2cに有効なOIDを与えていません。IE、mib ノード「sysSwYear.0」に関する情報が見つかりませんでした。これは、誤ったノードを指定したか、コードを生成しようとしている MIB がロードされていないことが原因である可能性があります。mib がロードされていることを確認するには、次の例を使用して mib2c を実行します。

   env MIBS="+MY-PERSONAL-MIB" mib2c -c mib2c.scalar.conf sysSwYear.0

次の場所にある MIB ロードのチュートリアルを読むことから始めることをお勧めします。

http://www.net-snmp.org/tutorial-5/commands/mib-options.html

また、snmptranslate を取得して MIB ノードに関する情報を表示できることを確認してください。snmptranslate が機能したら、戻って mib2c をもう一度試してください。

MIB の環境変数の設定や /usr/share/snmp/mibs でのプライベート MIB ファイルの定義など、必要なことはすべて既に行っていますが、まだ成功していません。何をすべきか?

4

2 に答える 2

4

あなたはそれが言うことを正確に行う必要があります:MIBを最初にパーサーにロードするようにします。を使用して開始しsnmptranslate、MIBをロードして解析できることを確認します。

# export MIBS="+NAME-OF-YOUR-MIB"
# snmptranslate -IR sysSwYear

それが機能しない場合は、エラー(またはその両方)があるため、MIBが検出またはロードされていません。その場合は、オプションを指定してsnmptranslateを実行すると、実行内容-Dparseに関する情報が多すぎますが、すべてを読んだ場合、問題がどこにあるかがわかります。

snmptranslateが上記のように機能すると、mib2cは正常に機能するはずです(MIBS環境変数を設定したままにしておくと仮定します)。

[注:exportshベースのシェルを使用していると仮定して使用しました。setenv代わりに使用=し、cshベースのシェルを使用している場合は記号なし]

于 2012-06-21T13:37:41.897 に答える
1

Linux を使用している場合、/var/lib/net-snmp/mib_indexes のデフォルトのパーミッションは 0700 であり、通常のユーザーにとって興味深いエラーが発生します。

これに対する修正は

linux ~ $ mkdir -p ~/.snmp/persist
linux ~ $ echo "persistentDir ~/.snmp/persist" >> ~/.snmp/snmp.conf

コマンドがスーパーユーザーには機能するが、通常のユーザーには機能しない場合は、これを試してください。受け入れられた回答は正しいですが、「#」で示されるように、通常のユーザーとしてこれらのコマンドを使用することには対処していないことに注意してください。

次のようにコマンドを発行する方がより直感的であることがわかりました。

mib2c -c mib2c.scalar.conf MY-PERSONAL-MIB::sysSwYear.0

mib は、次のコマンドの出力にリストされているディレクトリのいずれかにある必要があります。

linux ~ $ net-snmp-config --default-mibdirs
于 2017-09-11T20:36:19.417 に答える