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 回答