0

是否可以在 python 中使用 net-snmp 捕获错误(例如由于超时)?

我正在使用这段代码:

import netsnmp
import pprint

session = netsnmp.Session(Version = 2, DestHost='192.168.0.1', 
          Community='public', Timeout=10000, Retries=1, UseNumeric=1)
oid_obj = netsnmp.VarList(netsnmp.Varbind('.1.3.6.1.2.1.2.2.1.1'))
value_obj = session.walk(oid_obj)

# print the result and the error codes:
pprint.pprint(value_obj)
print("Error status: ", session.ErrorStr, session.ErrorNum, session.ErrorInd)

由于超时时间短,我得到不完整的结果 - 这很好(注意超时以微秒为单位)。不好的是我没有收到错误指示:

('1001', '1002', '1003')
('Error status: ', '', 0, 0)

我找错地方了吗?

这就是我正在使用的:(作为 Debian 软件包安装)

Package: libsnmp-python                  
Version: 5.4.3~dfsg-2
Homepage: http://net-snmp.sourceforge.net/

我会很感激一些帮助,甚至是关于采用哪个 SNMP 库的建议(如果 Net-SNMP 不能正确处理错误)。

4

3 回答 3

1

在 5.4.4 之前,Net-SNMP python 绑定中有一个错误(没有返回错误代码) - 升级解决了这个问题。希望它可以帮助某人。

于 2012-04-02T13:05:17.220 回答
0

仍然 m 在 ErrorStr 中得到空字符串

在 OEL linux 上工作:安装了以下版本:

net-snmp-5.5-41.el6_3.1.x86_64

net-snmp-python-5.5-41.el6_3.1.x86_64

net-snmp-utils-5.5-41.el6_3.1.x86_64

net-snmp-libs-5.5-41.el6_3.1.x86_64

无法获取超时的 ErrorStr。

可以帮忙。

谢谢 sapamja

于 2013-10-30T05:28:31.440 回答
0

In version 5.7.3 (built from Source RPM : net-snmp-5.7.3-4.5.src.rpm) the ErrorNum is always zero, but ErrorStr will have a value.

于 2018-04-18T15:31:03.990 回答