Sending Traps and Informs
Now we know how to encode OIDs and their respective syntax and values. This is exactly what we need to send SNMP traps and informs. The SnmpTrap application is capable of sending either SNMP traps or informs, depending on the value type of the parameter passed to the constructor. The PDU type is set to PDU.TRAP by default. If an inform is to be sent, the PDU type is set to PDU.INFORM.
The doTrap() method is invoked and we operate in much the same manner as the SnmpSet application. We get the variable binding that is sent in the trap or inform. After getVariableBinding() is called, checkTrapVariables() is called. Since the first variable binding in a trap or inform is sysUpTime and the second variable binding is snmpTrapOID for the particular trap or inform we are sending, this method ensures that these two variables appear before any other bindings we wish to send. Note that we created a _trapOID member variable for the SnmpTrap class:
private OID _trapOID = new OID("1.3.6.1.4.1.2789.2005");Now let's look at the Main class that sends two traps and two informs:
public class Main{ public Main(){ } public static void main(String[] args){ System.out.println("Doing SNMPv2 trap.."); SnmpTrap trap = new SnmpTrap("127.0.0.1", "1.3.6.1.4.1.2789.2005.1={s}WWW Server Has Been Restarted",1); trap.doTrap(); System.out.println("Doing SNMPv3 trap.."); trap = new SnmpTrap("127.0.0.1", "1.3.6.1.4.1.2789.2005.1={s}WWW Server Has Been Restarted", 1,"kschmidt","MD5","mysecretpass","DES","mypassphrase"); ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access