SNMP服务器连接
我正在向SNMP服务器发送SNMP陷阱。但是如果没有建立到服务器的连接,我必须打印日志SNMP服务器连接,snmp,Snmp,我正在向SNMP服务器发送SNMP陷阱。但是如果没有建立到服务器的连接,我必须打印日志 UdpAddress targetAddress = new UdpAddress("127.0.0.1/1985"); CommunityTarget target = new CommunityTarget(); target.setCommunity(new OctetString("public")); target.setAddress(targetAddress); target.setR
UdpAddress targetAddress = new UdpAddress("127.0.0.1/1985");
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(1000);
target.setVersion(SnmpConstants.version1);
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.listen();
// prepare the PDU for sending
PDU command = new PDU();
command.setType(PDU.GET);
command.add(new VariableBinding(new
OID("1.3.6.1.4.1.1331.11.5.1.0")));
// now send the PDU
**// I HAVE TO CHECK WETHER CONNECTION IS ESTABLISHED OR NOT WITH SNMP SERVER. AS OF
NOW EVEN IF I DO NOT START SNMP SERVER THAN I AM NOT GETTING ANY EXCEPTION and IF I START
SNMP SERVER THEN MESSAGE HAS BEEN SENT TO SNMP SERVER.....MAY BE IN SEND METHOD..ITS
CONNECTS WITH SNMP SERVER....BUT I TRIED TO FIND OUT BUT COULDNT ABLE TO DO IT.....**
ResponseEvent responseEvent = snmp.send(pdu, target);
是无连接的,因此您无法知道在这种情况下是否收到了数据包。是无连接的,因此您无法知道在这种情况下是否收到了数据包。尽管您希望在代码中发送SNMP陷阱/通知,但您正在执行以下操作
PDU command = new PDU();
command.setType(PDU.GET);
上述操作将导致发送一个SNMP get请求,理想情况下,该请求应该为您获取一个响应,但是您应该侦听的端口号(源或客户端的源地址)是。上面的代码片段有一些基本的缺陷,因此您无法获得期望的结果
您可能希望在SNMP4j上阅读一些链接以发送通知
尽管您希望在代码中发送SNMP陷阱/通知,但您正在执行以下操作
PDU command = new PDU();
command.setType(PDU.GET);
上述操作将导致发送一个SNMP get请求,理想情况下,该请求应该为您获取一个响应,但是您应该侦听的端口号(源或客户端的源地址)是。上面的代码片段有一些基本的缺陷,因此您无法获得期望的结果
您可能希望在SNMP4j上阅读一些链接以发送通知
正如您被告知UDP是无连接的,因此在这种情况下,您无法知道是否收到了数据包 但是,如果您确实必须在发送陷阱之前知道SNMP管理器处于活动状态。您可以创建自己的握手 逻辑相当简单,大致如下:
1) create in the MIB new leaf to indicates if the manager is connected and initial it to false.
2) send a trap to the manager.
2.1) if the manager is alive (receive the trap)
2.1.1) the manager send a set-request to the leaf with true.
代理可以从MIB上读取值,并知道管理器是否正在侦听陷阱
您可以扩展和改进逻辑,但基本思想是明确的,我认为正如您被告知UDP是无连接的,因此您无法知道在这种情况下是否接收到数据包 但是,如果您确实必须在发送陷阱之前知道SNMP管理器处于活动状态。您可以创建自己的握手 逻辑相当简单,大致如下:
1) create in the MIB new leaf to indicates if the manager is connected and initial it to false.
2) send a trap to the manager.
2.1) if the manager is alive (receive the trap)
2.1.1) the manager send a set-request to the leaf with true.
代理可以从MIB上读取值,并知道管理器是否正在侦听陷阱
您可以扩展和改进逻辑,但基本思想很清楚,我认为理论上,通过TCP运行SNMP是有可能的。有一个标准-RFC3440-和一个方法。不过没有常见用法。@tofro这只是一个草案,这意味着并非所有供应商都支持它。理论上,有可能通过TCP运行SNMP。有一个标准-RFC3440-和一个方法。不过,没有常见用法。@tofro这是一个草案,这意味着并非所有供应商都支持它。