0

良い一日、

pysnmp のツールを使用して、snmpsim のシミュレーターを生成しようとしていmib2dev.pyます。私は取得し続けますが、ValueError: Empty module nameその理由はわかりません。最新の pysnmp、pycrypt、および snmpsim があることを確認しました。私はマックで走っています。

必要なパッケージは easy_install でインストールされました。私はbrewのpython 2.7.8を使用しています。すべてのパッケージと python を削除してから、それらを再インストールしました。それは役に立ちませんでした。

このスタック オーバーフローの質問を確認しましたが、別のエラーが発生しています。

この MIB はhereから取得されます。実際の mib を表示することはできませんが、この小さな mib と同じエラーが発生しています。

エージェントのコーディングに問題はありません。現時点では、スカラーのみまたはテーブルのみのエージェントの例しか見つかりません。pysnmp を使用してエージェントを構築するための例を含むいくつかの優れたリソースを知っていれば、それは素晴らしいことです。

MIB:

MY-MIB DEFINITIONS ::= BEGIN

IMPORTS
        OBJECT-TYPE, Integer32, NOTIFICATION-TYPE, enterprises
                     FROM SNMPv2-SMI
;

myCompany       OBJECT IDENTIFIER ::= {enterprises 42}

testCount OBJECT-TYPE
    SYNTAX Integer32
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "A sample count of something."
    ::= {myCompany 1}

testDescription OBJECT-TYPE
    SYNTAX OCTET STRING
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "A description of something"
    ::= {myCompany 2}

testTrap NOTIFICATION-TYPE
    STATUS current
    DESCRIPTION "Test notification"
    ::= {myCompany 3}

END

build-pysnmp-mib からの .py スクリプト:

$ mib2dev.py --pysnmp-mib-dir="." --mib-module=MY-MIB.py 
Traceback (most recent call last):
  File "/usr/local/bin/mib2dev.py", line 4, in <module>
    __import__('pkg_resources').run_script('snmpsim==0.2.4', 'mib2dev.py')
  File "build/bdist.macosx-10.10-x86_64/egg/pkg_resources/__init__.py", line 696, in run_script

  File "build/bdist.macosx-10.10-x86_64/egg/pkg_resources/__init__.py", line 1614, in run_script

  File "/usr/local/lib/python2.7/site-packages/snmpsim-0.2.4-py2.7.egg/EGG-INFO/scripts/mib2dev.py", line 240, in <module>
    [ builder.ZipMibSource(m).init() for m in mibDirs ]
  File "/Library/Python/2.7/site-packages/pysnmp-4.2.5-py2.7.egg/pysnmp/smi/builder.py", line 45, in init

  File "/Library/Python/2.7/site-packages/pysnmp-4.2.5-py2.7.egg/pysnmp/smi/builder.py", line 103, in _init

ValueError: Empty module name
4

1 に答える 1

0

更新: smilint と pysnmp が示唆するように、次のように元の MIB ファイルに MODILE-IDENTITY 句を追加する必要があります。

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, NOTIFICATION-TYPE, enterprises
                 FROM SNMPv2-SMI
;

my-MIB MODULE-IDENTITY
   LAST-UPDATED "201501120000Z"
   ORGANIZATION  "X"
   CONTACT-INFO  "X"
   DESCRIPTION   "X"
   REVISION      "201501120000Z"
   DESCRIPTION   "X"
   ::= { enterprises 42 }

myCompany       OBJECT IDENTIFIER ::= { my-MIB 123 }
...

一般に、このような問題のトラブルシューティングを行うには、smilint を実行して、元の MIB が適切であり、libsmi セットアップが正常に機能しているかどうかを確認します。次に実行してみてください:

smidump -f python MY-MIB.txt

libsmi2pysnmp (build-pysnmp-mib によっても呼び出される) に供給される smidump 呼び出しの結果を確認します。

すべてがうまくいくと、build-pysnmp-mib は smidump を呼び出します。smidump は Python コードを生成し、それを libsmi2pysnmp スクリプトに渡します。後者は、pysnmp 準拠のコード (MY-MIB.py など) を生成します。

smidump ステップが最も壊れやすいように見えます。IMPORT ステートメントで言及されている利用できない MIB や、MIB の構文エラー/非互換性で簡単に失敗します。

于 2015-01-13T08:07:03.670 に答える