1

MIB ベースの SNMP スクリプトを実行しようとすると、問題が発生します。その関数を含むモジュールがインストールされていることはわかっていますが、関数 Counter64 を実行できません。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()
mibSources = mibBuilder.getMibSources() + ( builder.DirMibSource( '/path/to/command/mibs', ), )
mibBuilder.setMibSources( *mibSources )
print mibBuilder.getMibSources()
mibBuilder.loadModules( 
    'NS-MIB-smiv2',
    )
mibView = view.MibViewController( mibBuilder )
errorIndication, errorStatus, errorIndex, \
                 varBindTable = cmdGen.nextCmd( 
    cmdgen.CommunityData( 'Name', 'Community' ),
    cmdgen.UdpTransportTarget( ( 'IP Address', 161 ) ),
    ( ( '', 'serverName' ), ),
    )

print varBindTable

手動で割り当てられた OID を使用して問題なくクエリを実行できるため、環境の変数が正しいことはわかっています。私が受け取っているトレースバックは次のとおりです。

Traceback (most recent call last):

  File "./snmpcollectorexample.py", line 12, in <module>

    '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/NS-MIB-smiv2.py" load error: name 'Counter64' is not defined

誰かお勧めはありますか?Counter64 は pycopia-SMI Python モジュールの一部であり、インストールされていることを確認しました。しかし、この問題を解決する方法がわかりません。

4

1 に答える 1

1

問題を特定しました。なんらかの理由で、build-pysnmp-mibすべての変換コマンドを介して MIB を実行しているときに、ラッパーが Counter64 エントリを に追加していませんでしたmibBuilder.importSymbols()。手動で追加すると、すぐに移動しました。

于 2012-01-30T13:02:36.107 に答える