2012-01-26 19 views
2

PySNMPでMIBファイルを使用しようとしています。コードはかなり簡単です。複雑ではありません。 OIDの下で情報を取得しようとしています。次のように私が使用しているコードは次のとおりです。PySNMP MIBファイルを操作する際のエラー

#!/usr/local/bin/python2.7 

from pysnmp.smi import builder, view, error 
from pysnmp.entity.rfc3413.oneliner import cmdgen 

cmdGen = cmdgen.CommandGenerator() 
mibBuilder = builder.MibBuilder() 
mibPath = mibBuilder.getMibPath() + ('/path/to/command/mibs',) 
mibBuilder.setMibPath(*mibPath) 
mibBuilder.loadModules( 
    'MIB-File', 
    ) 
mibView = view.MibViewController(mibBuilder) 
errorIndication, errorStatus, errorIndex, \ 
       varBindTable = cmdGen.nextCmd( 
    cmdgen.CommunityData('Name', 'Community'), 
    cmdgen.UdpTransportTarget(('IP Address', 161)), 
    (('', 'serverName'),), 
    ) 

print varBindTable 

私は同じudpTransportTargetを使用してasynCommandGenerator.asyncNextCmdを使用してCommunityDataとき、それは問題なく動作するように、このに入れたデータが正確である知っています。さらに私が見ているエラーは、MibBuilderのコンポーネント固有のエラーです。

私が見ているエラーは、次のとおりです。

Traceback (most recent call last):

File "./snmpcollectortest.py", line 11, in

'NS-MIB-smiv2',

File "/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/pysnmp/smi/builder.py", line 221, in loadModules

pysnmp.smi.error.SmiError: MIB module "/path/to/command/mibs/MIB-File.py" load error: MIB file "ASN1.py[co]" not found in search path

更新:

私はM2Cryptoは私がASN1.py.を見つけることができなかった理由であるインストールされていなかったことがわかりましたしかし、私はこれを修正して、私はまだ同じエラーが発生しています。

+0

'mibPath = mibBuilder.getMibPath()+( '/ path/to/command/mibs'、)' shoudlは実際に有効なパスです。それともそれを意図的に難読化しましたか?それ以外の場合は、MIBが見つかりません。 – favoretti

+0

それは私のビジネス環境上の道であるという事実のため故意であった。 – Drahkar

答えて

7

getMibPath()/setMibPath()のメソッドは廃止されています。 .gg pysnmpまたはそのMIBモジュールを使用しないと動作しません。

代わりにgetMibSources()/setMibSources()のメソッドを使用してください。これらは、.eggとファイルベースの両方の設定で動作します。

mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('/path/to/command/mibs'),) 
mibBuilder.setMibSources(*mibPath) 
mibBuilder.loadModules(
    'MIB-File', 
) 

ところで、pysnmpはM2Cryptoを必要としない、必要とされるもの(SNMPv3の暗号のみ)pyasn1とpycryptoです。

+0

興味深い。私は月曜日に事務所に入るときにこれらの変更をしようとします。 M2Cryptoに関しては、私が知っている唯一の場所は、build-pysnmp-mibによって作成されたpysnmp MIBモジュールファイルで必要とされるASN1.pyモジュールを提供する場所です。 MIBをpysnmpモジュールに変換する別の方法がないかぎり? – Drahkar

+0

これは確かに正しい方向への動きでした。これを変更すると、最初のasn1.pyエラーが解決され、pysnmp-mibsモジュールをインストールしてすぐにいくつかの問題を解決することができました。しかし、今私はロードエラーが発生しています:名前 'Counter64'は定義されていないエラーです。私はSMIがインストールされたパッケージを持っているので、何が原因であるのか分かりません。 – Drahkar

+2

実際に私は別の質問でそれを提示します。あなたはこれに答えて、受け入れに値するでしょう。ありがとうございます。 – Drahkar

関連する問題