以下代码在响应源端口为162时有效,但在响应源端口为动态时似乎引发“遇到未知的SNMP团体名称”异常。
它与CommunityData / UdpTransportTarget映射有关吗?有什么方法可以接受源端口与请求目标端口不同的响应?
from pysnmp.hlapi import *
def send_notification(host, community):
errorIndication, errorStatus, errorIndex, varBinds = next(
sendNotification(
SnmpEngine(),
CommunityData(community),
UdpTransportTarget((host, 162)),
ContextData(),
'inform',
NotificationType(
ObjectIdentity('1.3.6.1.4.1.9.90000.1')
).addVarBinds(
('1.3.6.1.4.1.9.90000.1', Integer32(1)),
('1.3.6.1.4.1.9.90000.2', Integer32(2))
)
)
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s: at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
send_notification('127.0.0.1', 'mycomm')