2017-03-16 74 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