我正在尝试发送SNMP陷阱,指定发件人的代理IP地址。 我一直在测试net-snmp snmptrap命令及其选项,但我似乎无法修改陷阱本身的发件人地址字段。 我正在寻找类似的东西:
snmptrap -v 2c -c public destination_ip *SOURCE_AGENT_ADDRESS* MIB OID VALUE
如果有人知道是否有任何工具可以做到这一点,或者可以建议一个python库,那就太好了。
答案 0 :(得分:0)
如果您将SNMPv1与snmptrap
工具一起使用,则应该明确指定代理地址。
如果您使用的是SNMPv2c,则SNMP数据包中的代理地址没有专用字段。但是标准允许您将代理地址值放入预定义的变量绑定(也许是1.3.6.1.6.3.18.1.3.0
)。对于其他传统的SNMPv1 TRAP PDU字段,它的工作方式相同。
你也可以使用pysnmp来做到这一点:
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
sendNotification(
SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity('1.3.6.1.4.1.20408.4.1.1.2.0.432'),
).addVarBinds(
# agent uptime
('1.3.6.1.2.1.1.3.0', 12345),
# agent address
('1.3.6.1.6.3.18.1.3.0', '127.0.0.1'),
# enterprise OID
('1.3.6.1.6.3.1.1.4.3.0', '1.3.6.1.4.1.20408.4.1.1.2'),
# user variable-bindings may follow
)
)
)