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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2ctrap.src,v 1.5.2.3 2009/01/28 13:30:47 tmanoj Exp $ */
  2. /*
  3.  * @(#)snmpv2ctrap.java
  4.  * Copyright (c) 1996-2009 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] hostname timeTicks snmpTrapOid-value [OID type value] ...
  13.  *
  14.  * java snmpv2ctrap [-d] [-c community] [-p port] host TimeTicksvalue TrapOIDvalue [OID {INTEGER | STRING | GAUGE | TIMETICKS | OPAQUE | IPADDRESS | COUNTER | COUNTER64 | UNSIGNED32} value] ...
  15.  * e.g. 
  16.  * java snmpv2ctrap -p 162 -c public adventnet 1000 1.2.0 1.5.0 STRING advent
  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.  * Options: 
  23.  * [-d]                  - Debug output. By default off.
  24.  * [-c] <community>      - community String. By default "public".
  25.  * [-p] <port>           - remote port no. By default 162.
  26.  * <host>      Mandatory - The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  27.  * <timeticks> Mandatory - the value of object sysUpTime when the event occurred
  28.  * <OID-value> Mandatory - Object Identifier  
  29.  * <OID>                 - Give multiple no. of Object Identifiers with value.
  30.  * <type>                - Type of the object
  31.  * <value>               - object-instance value
  32.  */
  33. import java.lang.*;
  34. import java.util.*;
  35. import java.net.*;
  36. import com.adventnet.snmp.snmp2.*;
  37. public class snmpv2ctrap {
  38.   public static void main(String args[]) {
  39.     SnmpAPI api;
  40.             
  41.     // Take care of getting options
  42.     String usage =
  43.     "snmpv2ctrap [-d] [-c community] [-p port] [-g agent-address]n" +
  44.     "host TimeTicksvalue TrapOIDvalue [OID {INTEGER | STRING | n" +
  45.     "GAUGE | TIMETICKS | OPAQUE | IPADDRESS | COUNTER | n" +
  46.     "COUNTER64 | UNSIGNED32} value] ...";
  47.     String options[] = { "-d", "-c", "-p","-g"};
  48.     String values[] = { "None", null, null,null};
  49.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  50.     if (opt.remArgs.length<3) opt.usage_error();
  51.                      
  52.     // Start SNMP API
  53.     api = new SnmpAPI();
  54.     if (values[0].equals("Set")) api.setDebug( true );
  55.                 
  56.     // Open session 
  57.     SnmpSession session = new SnmpSession(api);
  58.     
  59.     // set v2c version
  60.     session.setVersion( SnmpAPI.SNMP_VERSION_2C ) ;
  61.     // set remote Host
  62.     UDPProtocolOptions ses_opt = new UDPProtocolOptions(opt.remArgs[0]);
  63.     // set community
  64.     if (values[1] != null) session.setCommunity( values[1] );
  65.     // set remote Port
  66.     try {
  67.         if (values[2] != null) 
  68.             ses_opt.setRemotePort( Integer.parseInt(values[2]) );        
  69.         else 
  70.             ses_opt.setRemotePort(162);
  71.     }
  72.     catch (NumberFormatException ex) {
  73.         System.err.println("Invalid Integer Arg");
  74.     }
  75.     session.setProtocolOptions(ses_opt);
  76.     // Build v2 trap PDU
  77.     SnmpPDU pdu = new SnmpPDU();
  78.     pdu.setCommand( api.TRP2_REQ_MSG );
  79.     
  80.     // Add the sysUpTime variable binding
  81.     SnmpOID oid = new SnmpOID(".1.3.6.1.2.1.1.3.0");
  82.     if (oid.toValue() == null) 
  83.         System.err.println("Invalid OID argument: .1.3.6.1.2.1.1.3.0");
  84.     else {
  85.         SnmpVar var = null ; 
  86.         try {
  87.             var = SnmpVar.createVariable(opt.remArgs[1], SnmpAPI.TIMETICKS);
  88.         }
  89.         catch (SnmpException e) {
  90.             System.err.println("Cannot create variable: " +oid+" with value: "+opt.remArgs[1]);
  91.         }
  92.         SnmpVarBind varbind = new SnmpVarBind(oid, var);
  93.         pdu.addVariableBinding(varbind);
  94.         
  95.     }        
  96.     //Add snmpTrapOid variable bindings
  97.      oid = new SnmpOID(".1.3.6.1.6.3.1.1.4.1.0");
  98.     if (oid.toValue() == null) System.err.println("Invalid OID argument: .1.3.6.1.6.3.1.1.4.1.0");
  99.     else {
  100.         SnmpVar var = null ;
  101.         try {
  102.             var = SnmpVar.createVariable(opt.remArgs[2], SnmpAPI.OBJID);
  103.         }
  104.         catch (SnmpException e) {
  105.             System.err.println("Cannot create variable: " +oid+" with value: "+opt.remArgs[2]);
  106.         }
  107.         SnmpVarBind varbind = new SnmpVarBind(oid, var);
  108.         pdu.addVariableBinding(varbind);
  109.         
  110.     }    
  111.     String agentAddress="";
  112.     String community="";
  113.     int otherVarBinds=0;
  114.     
  115.     
  116.     // add Variable Bindings
  117.     for (int i=3;i<opt.remArgs.length;) {
  118.       if (opt.remArgs.length < i+3) opt.usage_error(); //need "{OID type value}"
  119.      
  120.         oid = new SnmpOID(opt.remArgs[i++]);
  121.       if (oid.toValue() == null) 
  122.         System.err.println("Invalid OID argument: " + opt.remArgs[i]);
  123.       else 
  124.         addVarBind(pdu, oid, opt.remArgs[i++], opt.remArgs[i++]);
  125.     } // end of add variable bindings
  126.     if(values[3]!=null)
  127.     {
  128.         oid = new SnmpOID(".1.3.6.1.6.3.18.1.3.0");
  129.         addVarBind(pdu, oid,"STRING" , values[3]);
  130.     }
  131.     if(values[1]!=null)
  132.     {
  133.         oid = new SnmpOID(".1.3.6.1.6.3.18.1.4.0");
  134.         addVarBind(pdu, oid,"STRING", values[1]);
  135.     }
  136.     try {
  137.         // open session
  138.         session.open();
  139.         // Send PDU
  140.          session.send(pdu);
  141.     
  142.     } 
  143.     catch (SnmpException e) {
  144.       System.err.println("Sending PDU"+e.getMessage());
  145.     }
  146.     // close session    
  147.     session.close();
  148.     // stop api thread
  149.     api.close();
  150.     System.exit(0);
  151.   }
  152. /** adds the varbind  with specified oid, type and value to the pdu */
  153.   static void addVarBind(SnmpPDU pdu, SnmpOID oid, String type, String value)
  154.     {        
  155.       byte dataType ;
  156.       if (type.equals("INTEGER")) {
  157.           dataType = SnmpAPI.INTEGER;
  158.       } else if (type.equals("STRING")) {
  159.           dataType = SnmpAPI.STRING;
  160.       } else if (type.equals("GAUGE")) {
  161.           dataType = SnmpAPI.GAUGE;
  162.       } else if (type.equals("TIMETICKS")) {
  163.           dataType = SnmpAPI.TIMETICKS;
  164.       } else if (type.equals("OPAQUE")) {
  165.           dataType = SnmpAPI.OPAQUE;
  166.       } else if (type.equals("IPADDRESS")) {
  167.           dataType = SnmpAPI.IPADDRESS;
  168.       } else if (type.equals("COUNTER")) {
  169.           dataType = SnmpAPI.COUNTER;
  170.       } else if (type.equals("OID")) { 
  171.           dataType = SnmpAPI.OBJID;
  172.       } else { // unknown type
  173.           System.err.println("Invalid variable type: " + type);
  174.           return;
  175.       }
  176.       SnmpVar var = null;
  177.       try {
  178.           // create variable
  179.           var = SnmpVar.createVariable( value, dataType );
  180.       }
  181.       catch(SnmpException e){
  182.           System.err.println("Cannot create variable: " + oid + " with value: " + value);
  183.           return;
  184.       }
  185.       // create varbind
  186.       SnmpVarBind varbind = new SnmpVarBind(oid, var);
  187.       // add variable binding
  188.       pdu.addVariableBinding(varbind);
  189.     }
  190.   
  191. }