PySNMP 在超时前未收到响应——即使有文档示例
PySNMP No Response Received Before Timeout--Even with Documentation Examples
我已经安装了 PySNMP(版本 4.4.6)并正在尝试调用以下函数(更大 class 的一部分):
def walk(self):
#Walks OID to scavenge for information.
oids={}
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(self.cs),
UdpTransportTarget((self.device.split(".")[0], 161), timeout=60, retries=0),
ContextData(),
ObjectType(ObjectIdentity("1.3.6.1.4.1.14179.1.2.5.5"))):
print((errorIndication,
errorStatus,
errorIndex,
varBinds))
并重复收到以下输出:
(RequestTimedOut('No SNMP response received before timeout',),
我已经三重检查以确保我的社区字符串、SNMP 版本、设备名称、端口和 OID 是正确的。我已经将传输超时变量更改为 60 秒,但没有成功。我的第一个想法是它可能是防火墙问题,但后来我尝试 运行 文档中包含的简单示例:
from pysnmp.hlapi import *
g = getCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
print(next(g))
并收到完全相同的输出。有谁知道这可能是什么原因造成的?不幸的是,我在一个几乎没有管理员权限的服务器上,所以我不能去挖掘模块文件来改变任何东西。在此先感谢您的帮助!
你的代码看起来不错。只要你从 self.device.split(".")[0]
.
中得到正确的 hostname/IP
可能是出于某种原因您没有从 SNMP 代理收到响应。我会尝试 public SNMP 代理:
$ snmpwalk -v2c -c public demo.snmplabs.com 1.3.6
SNMPv2-MIB::sysDescr.0 = STRING: Linux zeus 4.8.6.5-smp #2 SMP Sun Nov 13 14:58:11 CDT 2016 i686
...
确保您没有 connectivity/firewall 问题。也可以考虑对您的本地 SNMP 代理尝试 snmpwalk
。如果您无法安装 Net-SNMP,请考虑尝试 snmpclitools 进行此实验。
我已经安装了 PySNMP(版本 4.4.6)并正在尝试调用以下函数(更大 class 的一部分):
def walk(self):
#Walks OID to scavenge for information.
oids={}
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData(self.cs),
UdpTransportTarget((self.device.split(".")[0], 161), timeout=60, retries=0),
ContextData(),
ObjectType(ObjectIdentity("1.3.6.1.4.1.14179.1.2.5.5"))):
print((errorIndication,
errorStatus,
errorIndex,
varBinds))
并重复收到以下输出:
(RequestTimedOut('No SNMP response received before timeout',),
我已经三重检查以确保我的社区字符串、SNMP 版本、设备名称、端口和 OID 是正确的。我已经将传输超时变量更改为 60 秒,但没有成功。我的第一个想法是它可能是防火墙问题,但后来我尝试 运行 文档中包含的简单示例:
from pysnmp.hlapi import *
g = getCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)))
print(next(g))
并收到完全相同的输出。有谁知道这可能是什么原因造成的?不幸的是,我在一个几乎没有管理员权限的服务器上,所以我不能去挖掘模块文件来改变任何东西。在此先感谢您的帮助!
你的代码看起来不错。只要你从 self.device.split(".")[0]
.
可能是出于某种原因您没有从 SNMP 代理收到响应。我会尝试 public SNMP 代理:
$ snmpwalk -v2c -c public demo.snmplabs.com 1.3.6
SNMPv2-MIB::sysDescr.0 = STRING: Linux zeus 4.8.6.5-smp #2 SMP Sun Nov 13 14:58:11 CDT 2016 i686
...
确保您没有 connectivity/firewall 问题。也可以考虑对您的本地 SNMP 代理尝试 snmpwalk
。如果您无法安装 Net-SNMP,请考虑尝试 snmpclitools 进行此实验。