0

アプリケーションのいくつかの特定の OID で GET コマンドを実行しようとしています。.txt 形式のカスタム MIB ファイルがあります。http://www.ibr.cs.tu-bs.de/projects/libsmi/tools/経由でファイルを .py 形式に変換しました

このエラーが発生します。出力を X-MIB.py として保存し、続行します。

smidump: module `mibs/AGILINK-MIB' contains errors, expect flawed output. 

X-MIB.py ファイルを C:\Python27\Lib\site-packages\pysnmp\smi\mibs に保存しました。これが悪い習慣であることは理解していますが、それが機能するかどうかをテストしたかっただけです。

いくつかの OID を取得するスクリプトは次のとおりです。

from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('169.254.0.1', 161)),
    cmdgen.MibVariable('X-MIB', 'aglGwDesc', '0'),
    cmdgen.MibVariable('SNMPv2-MIB', 'sysUpTime', '0'),
    lookupNames = True, 
    lookupValues = True
)

# Check for errors and print out results
if errorIndication:
    print(errorIndication)
elif errorStatus:
    print(errorStatus)
else:
        print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
    for name, val in varBinds:

エラーは次のとおりです。

Traceback (most recent call last):
  File "getting_started.py", line 11, in <module>
    lookupValues = True
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 424, in getCmd
    kwargs.get('contextName', null)
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 277, in getCmd
    self.makeReadVarBinds(varNames),
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 201, in makeReadVarBinds
    [ (x, self._null) for x in varNames ], oidOnly=True
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\cmdgen.py", line 209, in makeVarBinds
    varName.resolveWithMib(self.mibViewController, oidOnly=True)
  File "C:\Python27\lib\site-packages\pysnmp\entity\rfc3413\oneliner\mibvar.py", line 159, in resolveWithMib
    self.__modName, self.__symName
  File "C:\Python27\lib\site-packages\pysnmp\smi\builder.py", line 302, in importSymbols
    'No module %s loaded at %s' % (modName, self)
pysnmp.smi.error.SmiError: No module X-MIB loaded at <pysnmp.smi.builder.MibBuilder instance at 0x02D6B8F0>

私の質問は、このエラーを解決するにはどうすればよいですか? X-MIB.py ファイルを作成する際の以前のエラーが原因ですか?

エラーが「パスに X-MIB が見つかりません」などと表示されていないため、X-MIB.py ファイルを表示できることはわかっています。http://pysnmp.sourceforge.net/のドキュメントを読みましたが、従うことができません。

4

1 に答える 1

0

この投稿で述べたように、smidump の出力を libsmi2pysnmp ツールに渡すことで、pysnmp 互換の形式に変換する必要があります。

ただし、最初に smidump エラー/警告を解決することをお勧めします。そうしないと、*.py MIB に問題がある可能性があります。これらのエラーは、MIB 構文に固有のようです。

addMibSource() メソッドを使用して、独自の pysnmp 互換 MIB ディレクトリへの独自のパスを使用するように pysnmp を指定できます。

cmdgen.MibVariable('X-MIB', 'aglGwDesc', '0').addMibSource('/tmp/mymibs'),

最後に、SNMP エージェントを照会するために MIB は実際には必要ありません。コマンド ジェネレーターに MibVariable インスタンスの代わりにプレーンテキストの OID を渡すだけです。

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'),
    cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
    '1.3.6.1.2.1.1.1.0',
    '1.3.6.1.2.1.1.6.0'
)
于 2014-07-25T10:08:39.387 に答える