snmpv2ctrap.java.txt
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:6k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2ctrap.src,v 1.4 2002/09/09 05:43:43 pushpar Exp $ */
  2. /*
  3.  * @(#)snmpv2ctrap.java
  4.  * Copyright (c) 1996-2003 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  */
  7. /**
  8.  * This is an example program to explain how to write an application to send a
  9.  * v2c Trap message using com.adventnet.snmp.snmp2 package of AdventNetSNMP2 api.
  10.  * The user could run this application by giving any one of the following usage.
  11.  *  
  12.  * java snmpv2ctrap [options] -m mibfile hostname timeTicks snmpTrapOID-value [OID value] ...
  13.  *
  14.  * java snmpv2ctrap [-d] [-c community] [-p port] -m MIB_files host TimeTicksvalue OIDvalue [OID value] ...
  15.  * e.g.
  16.  * java snmpv2ctrap -m ../../../mibs/RFC1213-MIB 10.3.2.120 16352 coldStartTrap ifIndex.2 2
  17.  * 
  18.  * If the oid is not starting with a dot (.) it will be prefixed by .1.3.6.1.2.1 .
  19.  * So the entire OID of 1.1.0 will become .1.3.6.1.2.1.1.1.0 . You can also
  20.  * give the entire OID .
  21.  * 
  22.  * If the mib is loaded you can also give string oids in the following formats
  23.  * .iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0 or system.sysDescr.0 or
  24.  * sysDescr.0 .
  25.  *  
  26.  * Options:
  27.  * [-d]                  - Debug output. By default off.
  28.  * [-c] <community>      - community String. By default "public".
  29.  * [-p] <port>           - remote port no. By default 162.
  30.  * -m   <MIBfile>        - MIB files.Mandatory.To load multiple mibs give within double quotes files seperated by a blank space.       
  31.  * <host>      Mandatory - The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  32.  * <timeticks> Mandatory - the value of object sysUpTime when the event occurred
  33.  * <OID-value> Mandatory - Object Identifier  
  34.  * <OID>                 - Give multiple no. of Object Identifiers with value.
  35.  * <value>               - object-instance value
  36.  */
  37.     
  38. import java.lang.*;
  39. import java.util.*;
  40. import java.net.*;
  41. import com.adventnet.snmp.snmp2.*;
  42. import com.adventnet.snmp.mibs.*;
  43. public class snmpv2ctrap {
  44.   private static final int DEBUG = 0;
  45.   private static final int COMMUNITY = 1;
  46.   private static final int PORT = 2;
  47.   private static final int MIBS = 3;
  48.   
  49.   public static void main(String args[]) {
  50.     SnmpAPI api;
  51.             
  52.     // Take care of getting options
  53.     String usage = "snmpv2ctrap [-d] [-c community] [-p port] -m MIB_files nhost TimeTicksvalue OIDvalue [OID value] ...";
  54.     String options[] = { "-d", "-c", "-p", "-m"};
  55.     String values[] = { "None", null, null, null};
  56.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  57.     if (opt.remArgs.length<3) opt.usage_error();
  58.                      
  59.     // Start SNMP API
  60.     api = new SnmpAPI();
  61.     if (values[DEBUG].equals("Set")) api.setDebug( true );    
  62.         
  63.     // Open session 
  64.     SnmpSession session = new SnmpSession(api);
  65.     // set version 2c
  66.     session.setVersion( SnmpAPI.SNMP_VERSION_2C ) ;
  67.     // set remote Host
  68.     session.setPeername( opt.remArgs[0] );
  69.     // set community
  70.     if (values[COMMUNITY] != null) session.setCommunity( values[COMMUNITY] );
  71.     // set remote Port
  72.     try {
  73.         if (values[PORT] != null) 
  74.             session.setRemotePort( Integer.parseInt(values[PORT]) );        
  75.         else 
  76.             session.setRemotePort(162);
  77.     }
  78.     catch (NumberFormatException ex) {
  79.         System.err.println("Invalid Integer Arg");
  80.     }
  81.     // Loading MIBS 
  82.     MibOperations mibOps = new MibOperations();
  83.  
  84.     // To load MIBs from compiled file
  85.  mibOps.setLoadFromCompiledMibs(true);
  86.   
  87.     if (values[MIBS] != null) try {
  88.         System.err.println("Loading MIBs: "+values[MIBS]);
  89.         mibOps.loadMibModules(values[MIBS]);
  90.     } catch (Exception ex) {
  91.         System.err.println("Error loading MIBs: "+ex.getMessage());
  92.         System.exit(1);
  93.     }
  94.     // Build trap request PDU
  95.     SnmpPDU pdu = new SnmpPDU();
  96.     pdu.setCommand( api.TRP2_REQ_MSG );
  97.     
  98.     // Adding the sysUpTime variable binding 
  99.     SnmpOID oid = mibOps.getSnmpOID(".1.3.6.1.2.1.1.3.0");
  100.     if (oid == null) 
  101.         System.exit(1);
  102.     else     
  103.         addVarBind(mibOps, pdu, oid, opt.remArgs[1]);
  104.     // Adding the snmpTrapOID variable binding
  105.      oid = mibOps.getSnmpOID(".1.3.6.1.6.3.1.1.4.1.0");
  106.     if (oid == null) 
  107.         System.exit(1);
  108.     else 
  109.         addVarBind(mibOps, pdu, oid, opt.remArgs[2]);
  110.     
  111.     // add Variable Bindings
  112.     for (int i=3;i<opt.remArgs.length;) { 
  113.       if (opt.remArgs.length < i+2) opt.usage_error(); //need "{OID value}"
  114.      
  115.       oid = mibOps.getSnmpOID(opt.remArgs[i++]);
  116.     if (oid == null) 
  117.         System.exit(1);
  118.       else {
  119.         addVarBind(mibOps, pdu, oid, opt.remArgs[i++]);
  120.       }
  121.     } // end of add variable bindings
  122.     try {
  123.         // open session
  124.         session.open();
  125.         // Send Trap PDU
  126.          session.send(pdu);    
  127.     } 
  128.     catch (SnmpException e) {
  129.         System.err.println("Sending PDU : " + e.getMessage());
  130.       System.exit(1);
  131.     }
  132.     // close session    
  133.     session.close();
  134.     // stop api thread
  135.     api.close();
  136.     
  137.     System.exit(0);
  138.   }
  139.  /** <img SRC="images/v2candv3only.jpg" ALT="v3 only"> adds the varbind with specified oid and value */
  140.   static void addVarBind( MibOperations mibOps, SnmpPDU pdu, SnmpOID oid, String value)
  141.   {        
  142.       // Get the MibNode for this SnmpOID instance if found 
  143.       MibNode node = mibOps.getMibNode(oid);
  144.       if (node == null) 
  145.           System.err.println("Failed. MIB node unavailable for OID:"+oid);
  146.       else
  147.       {
  148.           // Get the syntax associated with this node
  149.           if (node.getSyntax() == null) 
  150.               System.err.println("Failed. OID not a leaf node.");
  151.           else
  152.           {
  153.               SnmpVarBind varbind = null;
  154.               try {
  155.                   // Get the SnmpVar instance for the value
  156.                   SnmpVar var = node.getSyntax().createVariable(value);
  157.                   // Create SnmpVarBind instance 
  158.                   varbind = new SnmpVarBind(oid,var);
  159.                   
  160.               } catch (SnmpException ex) { 
  161.                   System.err.println("Error creating variable."); 
  162.               }
  163.               // Add the variable-bindings to the PDU
  164.               pdu.addVariableBinding(varbind);      
  165.           }
  166.       }  
  167.   }
  168.   
  169. }