SNMP4j - метод sned (pdu, target), всегда возвращающий ноль - PullRequest
0 голосов
/ 19 марта 2020

Я использую движок браузера MIB в качестве SNMP-менеджера и отправляю прерывание из приложения Java, как описано ниже. Сценарий 1 - (Действительный IP-адрес) Сценарий 2 - (Неверный IP-адрес) В обоих сценариях в качестве ответа принимается значение NULL

publi c class TrapSenderVersion2 {

public static void main(String[] args) {
    TrapSenderVersion2 trapV2 = new TrapSenderVersion2();
    trapV2.sendTrap_Version2();
}
public void sendTrap_Version2() {
    try {
        // Create Transport Mapping
        TransportMapping transport = new DefaultUdpTransportMapping();
        transport.listen();

        // Create Target
        CommunityTarget cTarget = new CommunityTarget();
        cTarget.setCommunity(new OctetString("public"));
        cTarget.setVersion(SnmpConstants.version1);
        cTarget.setAddress(new UdpAddress("10.133.14.35/162"));
        cTarget.setRetries(2);
        cTarget.setTimeout(5000);

        // Create PDU for V2
        PDU pdu = new PDU();

        // need to specify the system up time
        pdu.add(new VariableBinding(SnmpConstants.sysUpTime, new OctetString(new Date().toString())));
        pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, new OID(TrapOid)));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.6.0"), new OctetString("23b77493-74dd-489a-9c99-61db6c97a2e1"))); 
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.7.0"), new OctetString("EventType")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.8.0"), new OctetString("ServiceType")));

        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.9.0"), new OctetString("inp44vpdl002-COLLECTOR")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.10.0"), new OctetString("14.140.156.15")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.11.0"), new OctetString("Collector"))); 
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.12.0"), new OctetString("Pune")));

        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.30450.1.9.1.1.13.0"), new OctetString("This is a addtional info text")));


        pdu.setType(PDU.NOTIFICATION);

        // Send the PDU
        Snmp snmp = new Snmp(transport);
        System.out.println("Sending V2 Trap... Check Wheather NMS is Listening or not? ");
        ResponseEvent re = snmp.send(pdu, cTarget);
        System.out.println("ResponseEvent " + re);
        snmp.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 20 марта 2020

Следующая строка решила мою проблему

pdu.setType(PDU.INFORM);

Я получил ответ отладкой исходного кода snmp4j, все зависит от типа PDU. Когда мы устанавливаем тип PDU как Trap, Notificationm, тогда ответ всегда будет возвращаться как ноль.

Таким образом, существует тип с именем "INFORM", который подтверждает запрос с ResponseEvent.

...