0

以下のコードを使用して単純な SNMP 操作を実行しようとしています。エラーを理解するのを手伝ってください。

    from pysnmp.entity.rfc3413.oneliner import cmdgen

    cmdGen = cmdgen.CommandGenerator()

    errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
        cmdgen.CommunityData('public'),
        cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
        cmdgen.MibVariable('SNMPv2-MIB', 'sysName', 0),
    )

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

上記のコードでは、次のエラーが発生します。

Traceback (most recent call last):
  File "tut.py", line 1, in <module>
    from pysnmp.entity.rfc3413.oneliner import cmdgen
  File "/usr/lib/python2.6/site-packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py", line 1, in <module>
    from pysnmp.entity import engine, config
  File "/usr/lib/python2.6/site-packages/pysnmp/entity/engine.py", line 2, in <module>
    from pysnmp.proto.rfc3412 import MsgAndPduDispatcher
  File "/usr/lib/python2.6/site-packages/pysnmp/proto/rfc3412.py", line 3, in <module>
    from pyasn1.compat.octets import null
ImportError: No module named compat.octets
4

2 に答える 2

0

システムの pyasn1 と pysnmp のパッケージが互いにバージョン互換性がない可能性があります。pyasn1 と pysnmp の両方のパッケージ (最新のもの) を $HOME に配置し、それぞれを指す $PYTHONPATH を設定することをお勧めします。

于 2014-06-24T21:42:44.687 に答える
0

これはおそらく、前の投稿へのコメントのはずです。イリヤは彼の答えで正しいです。私の側では、pyasn1 の上位バージョンに切り替えることで、この問題を修正することができました。1 0.0.11a-1ubuntu1 を使用していて、1_0.1.7-1ubuntu2 に切り替えました。この依存関係が python-pysnmp4 の依存関係でより適切に定式化されていれば、より良いでしょう。

于 2015-05-05T10:34:45.503 に答える