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

SNMP编程

开发平台:

C/C++

  1. /*
  2.  * @(#)corbagetbulk.java
  3.  * Copyright (c) 1996-2002 AdventNet, Inc. All Rights Reserved.
  4.  * Please read the associated COPYRIGHTS file for more details.
  5.  */
  6. /**
  7.  * This is an example program to explain how to write an application to do
  8.  * the basic SNMP operation GETBULK using com.adventnet.snmp.corba of AdventNetSNMP2 api.
  9.  * The user could run this application by giving any one of the following usage.
  10.  *  
  11.  * java corbagetbulk [options] hostname oid ...
  12.  *
  13.  * v3 request:
  14.  * java corbagetbulk [-SnmpServer hostName] [-ORBInitialPort orbPort] [-ORBInitialHost orbHost] [-v version(v1,v2,v3)] [-m MIB_files] [-c community] [-p port] [-t timeout] [-r retries] [-u user] [-a auth_protocol] [-w auth_password] [-s priv_password] [-i context_id] [-n contextName] host OID [OID] ...
  15.  * e.g. 
  16.  * java corbagetbulk -v v3  -a MD5 -w passwd -u username -p 2000 -c public -m ....mibsrfc1213-mib adventnet 1.1.0 1.2.0
  17.  *
  18.  * v2c request:
  19.  * java corbagetbulk [-SnmpServer hostName] [-ORBInitialPort orbPort] [-ORBInitialHost orbHost] [-v version(v1,v2)] [-m MIB_files] [-c community] [-p port] [-t timeout] [-r retries] host OID [OID] ...
  20.  * e.g.
  21.  * java corbagetbulk -p 161 -v v2 -c public -m ....mibsrfc1213-mib adventnet 1.1.0 1.2.0
  22.  * 
  23.  *
  24.  * Options:
  25.  * [-SnmpServer ] <hostName>      - SnmpServer SERVER option to specify the
  26. CORBA server host.
  27.  * [-ORBInitialPort ] <orbPort>   - port on which transient name server is running
  28.  * [-ORBInitialHost ] <orbHost>   - host name of transient name server
  29.  * [-c] <community>    - community String. By default "public".
  30.  * [-p] <port>         - remote port no. By default 161.
  31.  * [-t] <Timeout>      - Timeout. By default 5000ms.
  32.  * [-r] <Retries>      - Retries. By default 0. 
  33.  * <nonRepeaters>      - non-repeaters. Mandatory
  34.  * <maxRepetions>      - max-repetitions. Mandatory
  35.  * [-m] <MIBfile>      - MIB files.To load multiple mibs give within double quotes files seperated by a blank space.       
  36.  * [-v] <version>      - version(v1 / v2 / v3). By default v2c.
  37.  * [-u] <username>     - The v3 principal/userName
  38.  * [-a] <autProtocol>  - The authProtocol(MD5/SHA). Mandatory if authPassword is specified
  39.  * [-w] <authPassword> - The authentication password.
  40.  * [-s] <privPassword> - The privacy protocol password. Must be accompanied with auth password and authProtocol fields.
  41.  * [-i] <contextID>  - The contextIDto be used for the v3 pdu.
  42.  * [-n] <contextName>  - The contextName to be used for the v3 pdu.
  43.  * host Mandatory      - The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  44.  * OID  Mandatory      - Give multiple no. of Object Identifiers.
  45.  */
  46. import org.omg.CosNaming.*;
  47. import java.io.*;
  48. import org.omg.CORBA.*;
  49. import com.adventnet.snmp.corba.*;
  50. import ParseOptions;
  51. public class corbagetbulk
  52. {
  53.     public static void main( String[] args )
  54.      {
  55.         // Take care of getting options
  56.         String usage = "corbagetbulk [-SnmpServer hostName] [-ORBInitialPort orbPort] [-ORBInitialHost orbHost] [-v version(v2,v3)] [-m MIB_files] [-c community] [-p port] [-t timeout] [-r retries] [-nr non-repeaters] [-mr max-repetitions] [-u user] [-a auth_protocol] [-w auth_password] [-s priv_password] [-i context_id] [-n contextName]  host OID [OID] ...";
  57.         String options[] = {  "-SnmpServer", "-ORBInitialPort", "-ORBInitialHost",  "-c", "-p", "-t", "-r", "-m", "-nr", "-mr","-v","-u", "-a", "-w", "-s","-i","-n" };
  58.         String values[] = {  null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,null};
  59.         String userName = new String("");
  60.         String authProtocol = new String("NO_AUTH");
  61.         String authPassword = new String ("");
  62.         String privPassword = new String ("");
  63.         String contextID = new String ("");
  64.         String contextName = new String ("");
  65. final int USM_SECURITY_MODEL = 3;
  66.         ParseOptions opt = new ParseOptions(args,options,values, usage);
  67.         // check for at least hostname and one OID in remaining arguments
  68.         if (opt.remArgs.length<2) opt.usage_error();
  69.         try
  70.         {
  71.             // Initialise the ORB
  72.             System.out.println( "Initialising the ORB" );
  73.             org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init( args, null );
  74.             // Use Naming Service
  75.             org.omg.CORBA.Object objRef = orb.resolve_initial_references( 
  76.                                                                         "NameService" ); 
  77.             NamingContext ncRef = NamingContextHelper.narrow( objRef ); 
  78.             // bind the Object Reference in Naming
  79.             NameComponent nc = new NameComponent( "AdventnetSnmpFactory" , "" );
  80.             NameComponent[] path = { nc };
  81.             
  82.             // Bind to the SnmpTarget object 
  83.             //System.out.println( "Binding to the Factory object" );
  84.             //CORBAsnmp.SnmpTargetFactory factory = CORBAsnmp.SnmpTargetFactoryHelper.
  85.                             //bind( orb, "AdventnetSnmpTargetFactory" );
  86.             SnmpFactory factory = com.adventnet.snmp.corba.SnmpFactoryHelper.narrow( ncRef.resolve( path ) );
  87.             System.out.println( "Bound to the Factory object" );
  88.             // Get a Target object
  89.             com.adventnet.snmp.corba.SnmpTarget target = factory.createTarget();
  90.             System.out.println( "Got the SnmpTarget object" );
  91.             if(values[10] != null)
  92.             {  // if SNMP version is specified, set it
  93.                 if(values[10].equals("v2"))
  94.                     target.setSnmpVersion( com.adventnet.snmp.beans.SnmpTarget.VERSION2C ) ;
  95.                 else if(values[10].equals("v3"))
  96.                     target.setSnmpVersion( com.adventnet.snmp.beans.SnmpTarget.VERSION3 );
  97.                 else
  98.                 {
  99.                     System.out.println("Invalid Version Number");
  100.                     System.exit(1);
  101.                 }
  102.             }
  103.             else
  104.                 target.setSnmpVersion( com.adventnet.snmp.beans.SnmpTarget.VERSION2C ) ;
  105.             
  106.             int nonRepeaters = 0;
  107.             target.setTargetHost( opt.remArgs[0] );  // set the agent hostname
  108.             System.out.println( "setTargetHost() called " );
  109.             if (values[3] != null) // set the community if specified
  110.             target.setCommunity( values[3] );
  111.             try 
  112.             { // set the timeout/retries/port parameters, if specified
  113.             if (values[4] != null) 
  114.                     target.setTargetPort( Integer.parseInt(values[4]) );
  115.             if (values[5] != null) 
  116.                     target.setRetries( Integer.parseInt(values[5]) );
  117.             if (values[6] != null) 
  118.                     target.setTimeout( Integer.parseInt(values[6]) );
  119.             if (values[8] != null) 
  120.                 nonRepeaters = Integer.parseInt( values[8] );
  121.             target.setNonRepeaters( nonRepeaters );            
  122.             if (values[9] != null) 
  123.                 target.setMaxRepetitions( Integer.parseInt(values[9]) );
  124.             if (values[11] != null)
  125.                 userName = values[11];
  126.             if (values[12] != null) 
  127.                 authProtocol = values[12];
  128.             if (values[13] != null)
  129.                 authPassword = values[13];
  130.             if (values[14] != null) 
  131.                 privPassword = values[14];
  132.             if (values[15] != null) 
  133.                 contextID = values[15];
  134.             if (values[16] != null) 
  135.                 contextName = values[16];
  136.             
  137.             
  138.             if(target.getSnmpVersion() == com.adventnet.snmp.beans.SnmpTarget.VERSION3) 
  139.             {
  140.                 target.setPrincipal(userName);
  141.                 target.setAuthPassword(authPassword);
  142.                 target.setPrivPassword(privPassword);
  143.                 target.setContextID(contextID);
  144.                 target.setContextName(contextName);
  145.                 if(authProtocol.equals("SHA"))
  146. {
  147.                   target.setAuthProtocol(com.adventnet.snmp.beans.SnmpTarget.SHA_AUTH);
  148. }
  149.                 else
  150. {
  151.                   target.setAuthProtocol(com.adventnet.snmp.beans.SnmpTarget.MD5_AUTH);
  152. }
  153. target.create_v3_tables();
  154.             }
  155.             } catch (NumberFormatException ex)
  156.             {
  157.                 System.err.println("Invalid Integer Argument "+ex);
  158.             }
  159.             if (values[7] != null) 
  160.                 try 
  161.             { // Load the MIB files 
  162.                 System.err.println("Loading MIBs: "+values[7]);
  163.                 target.loadMibs(values[7]);
  164.             } catch (com.adventnet.snmp.corba.SnmpException ex)
  165.             {
  166.                 System.err.println("Error loading MIBs: " + ex.reason );
  167.             }
  168.             // create OID array from command line arguments
  169.             String oids[] = new String[opt.remArgs.length-1];
  170.             for (int i=1;i<opt.remArgs.length;i++) oids[i-1] = opt.remArgs[i];
  171.             
  172.             // Set the OID List on the SnmpTarget instance
  173.             System.out.println( "About to set OID list" );
  174.             target.setObjectIDList(oids);
  175.             System.out.println( "setObjectIDList() called " );
  176.             System.out.println( "About to call SNMP GetBulk" );
  177.             String[][] result = target.snmpGetBulkList(); // do a getbulk request
  178.             
  179.             if (result == null) 
  180.             {
  181.                 System.err.println("Request failed or timed out." + target.getErrorString() + " n" );
  182.             } else 
  183.             { // print the values
  184.                 System.out.println("Response received.  Values:");
  185.                 for (int i=0; i < nonRepeaters; i++ )
  186.                     System.out.println( result[i][0] );
  187.                 StringBuffer sb = new StringBuffer("nRepeaters:n");
  188.                 
  189.                 for (int j=0;j<result[0].length;j++) {
  190.                     for (int i=nonRepeaters;i<oids.length;i++) { 
  191.                         sb.append(result[i][j]  + " t ");
  192.                     }
  193.                     sb.append("n");
  194.                 }
  195.                 System.out.println(sb.toString());
  196.             }
  197.             // All done; destroy the server-side Target object
  198.             factory.destroyTarget( target.getName() );
  199.         }  catch (Exception e) {
  200.             System.err.println("Error : "+e.getMessage());
  201.         }
  202.         System.exit(0);
  203.   }
  204. }