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

SNMP编程

开发平台:

C/C++

  1. /* $Id: corbasendtrap.java,v 1.3 2002/09/09 05:45:01 tonyjpaul Exp $ */
  2. /*
  3.  * @(#)corbasendtrap.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 do
  9.  * send trap using com.adventnet.snmp.corba of AdventNetSNMP2 api.
  10.  * The user could run this application by giving any one of the following usage.
  11.  *  
  12.  * java corbasendtrap [options ] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks OID value 
  13.  *
  14.  * java corbasendtrap [-SnmpServer hostName] [-ORBInitialPort orbPort] [-ORBInitialHost orbHost] [-c community] [-p port] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks OID value 
  15.  * e.g. 
  16.  * java corbasendtrap -c public -p 2000 -m ....mibsrfc1213-MIB local-host 1.2.0 local-host 1 2 100 1.5.0 trap 
  17.  *
  18.  * Options:
  19.  * [-SnmpServer ] <hostName>      - SnmpServer SERVER option to specify the CORBA server host.
  20.  * [-ORBInitialPort ] <orbPort>   - port on which transient name server is running
  21.  * [-ORBInitialHost ] <orbHost>   - host name of transient name server
  22.  * [-c ] <community>              - community String. By default "public".
  23.  * [-p ] <port>                      - remote port no. By default 161.
  24.  * enterprise Mandatory           - enterprise oid
  25.  * generic-trap Mandatory         - generic trap value
  26.  * specific-trap Mandatory        - specific-trap value
  27.  * agent-addr Mandatory           - agent address        
  28.  * -m   Mandatory       - MIB files.To load multiple mibs give within double quotes files seperated by a blank space.       
  29.  * host Mandatory       - The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  30.  * OID  Mandatory       - Give multiple no. of Object Identifiers.
  31.  */
  32. import org.omg.CosNaming.*;
  33. import java.lang.*;
  34. import java.util.*;
  35. import java.net.*;
  36. import org.omg.CORBA.*;
  37. import com.adventnet.snmp.corba.*;
  38. import ParseOptions;
  39. public class corbasendtrap
  40. {
  41.     public static void main( String[] args )
  42.      {
  43.         // Take care of getting options
  44.         String usage = "corbasendtrap [-SnmpServer hostName] [-ORBInitialPort orbPort] [-ORBInitialHost orbHost] [-c community] [-p port] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks OID value ";
  45.         String options[] = {  "-SnmpServer", "-ORBInitialPort", "-ORBInitialHost", 
  46.                                             "-m", "-c", "-p" };
  47.         String values[] = {  null, null, null, null, null, null };
  48.         ParseOptions opt = new ParseOptions(args,options,values, usage);
  49.         // check for at least hostname and one OID in remaining arguments
  50.         if (opt.remArgs.length<8) opt.usage_error();
  51.         try
  52.         {
  53.             // Initialise the ORB
  54.             System.out.println( "Initialising the ORB" );
  55.             org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init( args, null );
  56.             // Use Naming Service
  57.             org.omg.CORBA.Object objRef = orb.resolve_initial_references( 
  58.                                                                         "NameService" ); 
  59.             NamingContext ncRef = NamingContextHelper.narrow( objRef ); 
  60.             // bind the Object Reference in Naming
  61.             NameComponent nc = new NameComponent( "AdventnetSnmpFactory" , "" );
  62.             NameComponent[] path = { nc };
  63.             
  64.             // Bind to the SnmpTarget object 
  65.             //System.out.println( "Binding to the Factory object" );
  66.             //CORBAsnmp.SnmpTargetFactory factory = CORBAsnmp.SnmpTargetFactoryHelper.
  67.                             //bind( orb, "AdventnetSnmpTargetFactory" );
  68.             com.adventnet.snmp.corba.SnmpFactory factory = com.adventnet.snmp.corba.SnmpFactoryHelper.narrow( ncRef.resolve( path ) );
  69.             System.out.println( "Bound to the Factory object" );
  70.             // Get a Target object
  71.             com.adventnet.snmp.corba.SnmpTarget target = factory.createTarget();
  72.             System.out.println( "Got the SnmpTarget object" );
  73.             target.setTargetHost( opt.remArgs[0] );
  74.             target.setTargetPort( 162 );
  75.             if ( values[4] != null )
  76.                     target.setCommunity( values[4] );    
  77.             int trap_type = 1, specific_type = -1;
  78.             long time=0;
  79.             try
  80.             {
  81.                 if ( values[5] != null )
  82.                     target.setTargetPort( Integer.parseInt( values[5] ));    
  83.                 trap_type = Integer.parseInt( opt.remArgs[3] );
  84.                 specific_type = Integer.parseInt( opt.remArgs[4] );
  85.                 time = (long) Integer.parseInt( opt.remArgs[5] );
  86.             } catch( NumberFormatException ex ){
  87.                     System.err.println( "Invalid Integer Argument " + ex);
  88.             opt.usage_error();
  89.             }
  90.             if (values[3] != null) 
  91.             try 
  92.             { // Load the MIB files 
  93.             System.err.println("Loading MIBs: "+values[3]);
  94.             target.loadMibs(values[3]);
  95.             } catch (com.adventnet.snmp.corba.SnmpException ex)
  96.             {
  97.             System.err.println("Error loading MIBs: " + ex.reason );
  98.             }
  99.             else
  100.                 opt.usage_error(); 
  101.             // create OID and variable value lists from command line
  102.             String oids[] = null, var_values[] = null;
  103.         int num_varbinds = 0;
  104.         for (int i=6;i<opt.remArgs.length;i+=2) { // add Variable Bindings
  105.         if (opt.remArgs.length < i+2) //need "{OID type value}"
  106.             opt.usage_error(); 
  107.         num_varbinds++;
  108.         }
  109.         oids = new String[num_varbinds];
  110.         var_values = new String[num_varbinds];
  111.         for (int i=0;i<num_varbinds;i++) { // add Variable Bindings
  112.         oids[i] = opt.remArgs[(2*i)+6];
  113.         var_values[i] = opt.remArgs[(2*i)+7];
  114.         }
  115.         // use SnmpTarget methods to send trap w/ specified OIDs/values
  116.         target.setObjectIDList(oids);
  117.         System.err.println("Sending Trap: "+opt.remArgs[1]+ opt.remArgs[2]+ trap_type+
  118.                 specific_type+ time+ var_values[0]);
  119.         target.snmpSendTrap(opt.remArgs[1], opt.remArgs[2], trap_type,
  120.                 specific_type, (int) time, var_values);
  121.         // allow time to send trap before exiting
  122.         Thread.sleep(500);
  123.             // All done; destroy the server-side Target object
  124.             factory.destroyTarget( target.getName() );
  125.     } catch (Exception e) {
  126.         System.err.println("Error Sending Trap: "+e.getMessage());
  127.         e.printStackTrace();
  128.     }
  129.     System.exit(0);
  130.     
  131.     }
  132. }