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

我正在向SNMP服务器发送SNMP陷阱。但是如果没有建立到服务器的连接,我必须打印日志

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这是一个草案,这意味着并非所有供应商都支持它。