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

SNMP编程

开发平台:

C/C++

  1. /* $Id: rmisendtrap.java,v 1.3 2002/09/09 05:41:24 tonyjpaul Exp $ */
  2. /*
  3.  * @(#)rmisendtrap.java
  4.  * Copyright (c) 1996-2002 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the COPYRIGHTS file for more details.
  6.  */
  7. /** 
  8.  *  Use RMI to send SNMP trap based on command line arguments.  Loads MIBs 
  9.  *  as specified, and converts to/from names for loaded MIB data. 
  10.  *  The RMI server is specified with the -SnmpServer option
  11.  *  and defaults to localhost if not specified.
  12.  *  Since variable types are not input, MIBs have to be loaded for
  13.  *  any variables being used in trap PDU.
  14.  *  Once a MIB is loaded on the server, susequent uses of
  15.  *  This program will have the MIB available for SNMP operations.
  16.  *  
  17.  * java rmisendtrap [options ] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks OID value 
  18.  *
  19.  * java rmisendtrap [-SnmpServer hostName] [-c community] [-p port] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks OID value 
  20.  * e.g. 
  21.  * java rmisendtrap -c public -p 2000 -m ....mibsrfc1213-MIB local-host 1.2.0 local-host 1 2 100 1.5.0 trap 
  22.  *
  23.  * Options:
  24.  * [-SnmpServer ] <hostName>      - SnmpServer SERVER option to specify the RMI server host.
  25.  * [-c ] <community>              - community String. By default "public".
  26.  * [-p ] <port>                      - remote port no. By default 161.
  27.  * enterprise Mandatory           - enterprise oid
  28.  * generic-trap Mandatory         - generic trap value
  29.  * specific-trap Mandatory        - specific-trap value
  30.  * agent-addr Mandatory           - agent address        
  31.  * -m   Mandatory       - MIB files.To load multiple mibs give within double quotes files seperated by a blank space.       
  32.  * host Mandatory       - The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  33.  * OID  Mandatory       - Give multiple no. of Object Identifiers.
  34.  */
  35. import java.lang.*;
  36. import java.util.*;
  37. import java.net.*;
  38. import java.rmi.*;
  39. public class rmisendtrap {
  40.     public static void main(String args[]) {
  41.     // Take care of getting options
  42.     String usage = "rmisendtrap [-SnmpServer hostName] [-c community] [-p port]  -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks [OID value] ..."; 
  43.     String options[] = { "-c", "-m", "-p", "-SnmpServer" };
  44.     String values[] = { null,null, null, null};
  45.       
  46.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  47.     if (opt.remArgs.length<6) opt.usage_error();
  48.     com.adventnet.snmp.rmi.SnmpFactory factory = null;
  49.     com.adventnet.snmp.rmi.SnmpTarget target = null;
  50.     try {
  51.         System.out.println( "Performing lookup with RMI Registry ... " );
  52.         if(values[3] != null)   
  53.         factory = (com.adventnet.snmp.rmi.SnmpFactory) 
  54.             Naming.lookup( "rmi://" + values[3] + "/AdventnetSnmpFactory" );
  55.         else 
  56.         factory = (com.adventnet.snmp.rmi.SnmpFactory) 
  57.             Naming.lookup( "rmi:///AdventnetSnmpFactory" );
  58.         System.out.println( "Lookup succeeded " );
  59.         // Get a Target object
  60.         target = factory.createTarget();
  61.         target.setTargetHost( opt.remArgs[0] );  // set destination hostname
  62.         target.setTargetPort( 162 );  // set destination port
  63.         if (values[0] != null) // set the community if specified
  64.         target.setCommunity( values[0] );
  65.         int trap_type=-1,specific_type=-1;
  66.         long time=0;
  67.         try {  // set the port parameter, if specified, and trap parameters
  68.         if (values[2] != null) 
  69.             target.setTargetPort( Integer.parseInt(values[2]) );
  70.         trap_type = Integer.parseInt(opt.remArgs[3]); 
  71.         specific_type = Integer.parseInt(opt.remArgs[4]);
  72.         time = (long) Integer.parseInt(opt.remArgs[5]);
  73.         } catch (NumberFormatException ex) {
  74.         System.err.println("Invalid Integer Argument "+ex);
  75.         opt.usage_error();
  76.         }
  77.         if (values[1] != null) try {  // Load the MIB files 
  78.         System.err.println("Loading MIBs: "+values[1]);
  79.         target.loadMibs(values[1]);
  80.         } catch (Exception ex) {
  81.         System.err.println("Error loading MIBs: "+ex);
  82.         }
  83.         else
  84.             opt.usage_error();     
  85.         // Put together OID and variable value lists from command line
  86.         String oids[] = null, var_values[] = null;  // trap oids and values
  87.         int num_varbinds = 0;
  88.         for (int i=6;i<opt.remArgs.length;i+=2) { // add Variable Bindings
  89.         if (opt.remArgs.length < i+2) //need "{OID type value}"
  90.             opt.usage_error(); 
  91.         num_varbinds++;
  92.         }
  93.         oids = new String[num_varbinds];
  94.         var_values = new String[num_varbinds];
  95.         for (int i=0;i<num_varbinds;i++) { // add Variable Bindings
  96.         oids[i] = opt.remArgs[(2*i)+6];
  97.         var_values[i] = opt.remArgs[(2*i)+7];
  98.         }
  99.         if(oids != null)
  100.         // use SnmpTarget methods to send trap w/ specified OIDs/values
  101.             target.setObjectIDList(oids);
  102.         
  103.         if(var_values != null && var_values.length > 0)
  104.         System.err.println("Sending Trap: "+opt.remArgs[1]+ opt.remArgs[2]+ trap_type+
  105.                 specific_type+ time+ var_values[0]);
  106.         else
  107.             System.err.println("Sending Trap: "+opt.remArgs[1]+ opt.remArgs[2]+ trap_type+
  108.                 specific_type+ time);
  109.         target.snmpSendTrap(opt.remArgs[1], opt.remArgs[2], trap_type,
  110.                 specific_type, time, var_values);
  111.         // allow time to send trap before exiting
  112.         Thread.sleep(500);
  113.     } catch (Exception e) {
  114.         System.err.println("Error Sending Trap: "+e.getMessage());
  115.         e.printStackTrace();
  116.     }
  117.     System.exit(0);
  118.     
  119.     }
  120. }