Section 14.4. Sending Traps and Informs


14.4. 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");         trap.doTrap( );         System.out.println("Doing SNMPv2 inform..");         trap = new SnmpTrap("127.0.0.1",           "1.3.6.1.4.1.2789.2005.1={s}WWW Server Has Been Restarted",2);         trap.doTrap( );         System.out.println("Doing SNMPv3 inform..");         trap =           new SnmpTrap("127.0.0.1",           "1.3.6.1.4.1.2789.2005.1={s}WWW Server Has Been Restarted",           2,"kschmidt","MD5","mysecretpass","DES","mypassphrase");         trap.doTrap( );       }     } 

Note that if you pass an integer value 1 to the third parameter of the constructor, a trap is sent. If you pass the value 2, an inform is sent. Here's the output from this application:

     % java -classpath SNMP4J    .jar:. Main     Doing SNMPv2 trap..     TRAP sent successfully     Doing SNMPv3 trap..     TRAP sent successfully     Doing SNMPv2 inform..     Received response after 9 millis     Received response: requestID=1332193165, errorIndex=0, errorStatus=Success(0)     1.3.6.1.4.1.2789.2005.1 = WWW Server Has Been Restarted     1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.4.1.2789.2005     Doing SNMPv3 inform..     Received response after 115 millis     Received response: requestID=1931824326, errorIndex=0, errorStatus=Success(0)     1.3.6.1.4.1.2789.2005.1 = WWW Server Has Been Restarted     1.3.6.1.6.3.1.1.4.1.0 = 1.3.6.1.4.1.2789.2005 

Note that when an inform is sent, a response is received. Recall that SNMP informs are basically traps where the receiver sends an acknowledgement when it receives the PDU.




Essential SNMP
Essential SNMP, Second Edition
ISBN: 0596008406
EAN: 2147483647
Year: 2003
Pages: 165

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net