Как отправить настроенное сообщение-ловушку менеджеру snmp?

В приведенном ниже фрагменте кода, куда добавить мое индивидуальное сообщение на лету

Описание :

У меня работает мой менеджер, который упоминается как NOCIP, также есть файл MIB, но при отправке ловушки для определенного OID сообщения должны различаться, хотя ловушка одинакова для разных сценариев.

eg :

if ( ...) {

ловушка1: индивидуальное сообщение1

}

иначе если(...) {

ловушка1 : настроенное сообщение2

}

еще{

ловушка2: индивидуальное сообщение3

}

public void sendSnmpV2Trap()
  {
    try
    {
      //Create Transport Mapping
      TransportMapping transport = new DefaultUdpTransportMapping();
      transport.listen();

      //Create Target
      CommunityTarget comtarget = new CommunityTarget();
      comtarget.setCommunity(new OctetString(community));
      comtarget.setVersion(SnmpConstants.version2c);
      comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
      comtarget.setRetries(2);
      comtarget.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(SnmpConstants.snmpTrapAddress, new IpAddress(ipAddress)));


      pdu.setType(PDU.NOTIFICATION);

      //Send the PDU
      Snmp snmp = new Snmp(transport);
      System.out.println("Sending V2 Trap to " + ipAddress + " on Port " + port);
      snmp.send(pdu, comtarget);
      snmp.close();
    }
    catch (Exception e)
    {
      System.err.println("Error in Sending V2 Trap to " + ipAddress + " on Port " + port);
      System.err.println("Exception Message = " + e.getMessage());
    }
  }
}-

person Rafi_Syed_Java    schedule 11.09.2014    source источник


Ответы (1)


Если вы хотите, чтобы ваша ловушка содержала настроенное сообщение, вы должны прикрепить его как VariableBinding.

Например, если вы хотите передать OctetString, вы делаете

pdu.add(new VariableBinding(<yourCustomOID>, new OctetString("This unit has caught fire")));

Поместите это сразу после кода, который добавляет три уже существующие переменные. Убедитесь, что порядок ваших varbind соответствует тому, что рекламирует ваш файл MIB.

Я бы попытался выделить логику if-else в отдельный метод и заставить его возвращать соответствующее значение для OctetString (или того, что вы отправляете).

person Jolta    schedule 12.09.2014
comment
@Joltta Спасибо за ответ - person Rafi_Syed_Java; 12.09.2014
comment
Если вам понравился ответ, и он ответил на ваш вопрос, рассмотрите его accepting. Таким образом, я получаю вознаграждение за свои усилия по ответу на него. - person Jolta; 15.09.2014
comment
... и люди, которые приходят позже, знают, что это действительно помогло вам решить вашу проблему :) - person Matthieu; 31.12.2014