Как я могу отправить прерывания snmpv2 от JAVA-приложения. Я пытался сделать пример на snmp4j, но он не работал.
Я использую SNMP4J для этого.
Этот javadoc может помочь вам в написании кода. Вы можете использовать Snmp.trap() метод
Edit:
Ну, у меня сейчас нет своего кода, но вы можете обратиться к этому. Вы должны использовать Snmp.notify() для отправки V2 ловушки вместо Snmp.trap(), так как trap() поддерживает только отправку V1 ловушек.
Я бы выбрал библиотеку snmp4j http://www.snmp4j.org/ .
import org.snmp4j.*;
import org.snmp4j.event.*;
...
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setVersion(SnmpConstants.version2c);
PDU request = new PDU();
request.setType(PDU.V2TRAP);
request.setGenericTrap(PDUv2.COLDSTART);
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.listen();
snmp.sendPDU(request, target, null, listener);
Мне потребовалось некоторое время, но я, наконец, понял, как использовать SNMP4J для отправки trap: Надеюсь, это поможет..
public static void main(String[] args) throws Exception {
// Create PDU
PDU trap = new PDU();
trap.setType(PDU.TRAP);
OID oid = new OID("1.2.3.4.5");
trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
trap.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(5000))); // put your uptime here
trap.add(new VariableBinding(SnmpConstants.sysDescr, new OctetString("System Description")));
//Add Payload
Variable var = new OctetString("some string");
trap.add(new VariableBinding(oid, var));
// Specify receiver
Address targetaddress = new UdpAddress("10.101.21.32/162");
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setVersion(SnmpConstants.version2c);
target.setAddress(targetaddress);
// Send
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.send(trap, target, null, null);
}