2017-03-16 122 views
0

我是网络编程专门针对snmp的新手。我只想发送一个简单的snmp请求localy,看看它发出了什么。到目前为止,文档并没有对发送方法做太多的说明。这是我遵循的examplethis。我第一次用他们作为有,但后来他们定制例如像下面:pysnmp发送请求不起作用

from pysnmp.hlapi import * 
g = getCmd(SnmpEngine(), 
CommunityData('public'), 
UdpTransportTarget(('demo.snmplabs.com', 161)), 
ContextData(), 
ObjectType(ObjectIdentity('TCP-MIB', 'tcpConnectionState', 
         'ipv4', '127.0.0.1', 41511, 
         'ipv4', '127.0.0.1', 993) 
) 
) 
g.send([ObjectType(ObjectIdentity('IF-MIB', 'ifInOctets'))]) 

但是我得到这个错误:

类型错误:无法发送非无值到刚刚启动的发电机

回答

0

你要做的是发送一个值到Python生成器而不是你的对端SNMP代理。只需使用next()(或将其放入循环),以便在第一次迭代时将SNMP数据包推送到网络。这里是example

+0

感谢您的回答。现在我没有得到的是如何指定我想要的信息类型。例如,arp表信息 – user4237435

+1

通常,这取决于您正在与之通话的SNMP设备的种类。你可以尝试使用'BRIDGE-MIB :: dot1dTpFdbTable'(这是1.3.6.1.2.1.17.4.3)。 –

+0

再次感谢。它确实有效。你知道任何好的文档吗?我正在获取MAC地址,但我无法识别IP地址。他们应该被包含在OID响应中,但看起来完全不同,他们现在像1.3.6.1.2.1.17.4.3.x.xxx.x.xxx.xxx.xxx.xxx.xxx.xxx.xx.有没有办法获得IP地址? – user4237435