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

SNMP编程

开发平台:

C/C++

  1. /* $Id: sendtrap.java,v 1.3 2002/09/09 05:36:28 tonyjpaul Exp $ */
  2. /*
  3.  * @(#)sendtrap.java
  4.  * Copyright (c) 1996-2002 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  */
  7. /** 
  8.  *  Send SNMP trap based on command line arguments.  Loads MIBs 
  9.  *  as specified, and converts to/from names for loaded MIB data. 
  10.  *  Since variable types are not input, MIBs have to be loaded for
  11.  *  any variables being used in trap PDU.
  12.  *
  13.  * This is an example program to explain how to write an application to send a
  14.  * v1 Trap message using com.adventnet.snmp.beans packages of AdventNetSNMP2 api.
  15.  * The user could run this application by giving any one of the following usage.
  16.  *  
  17.  * java sendtrap [options] -m mibfile hostname enterprise-oid agent-addr generic-trap specific-trap 
  18.  *      timeticks [OID value] ...
  19.  *
  20.  * java sendtrap [-c community] [-p port] -m MIB_files host enterprise agent-addr generic-trap specific-trap timeticks [OID value] ...
  21.  * e.g. 
  22.  * java sendtrap -p 162 -c public -m ../../mibs/RFC1213-MIB adventnet 1.2.0 adventnet 0 6 1000 1.5.0 advent
  23.  * 
  24.  * If the oid is not starting with a dot (.) it will be prefixed by .1.3.6.1.2.1 .
  25.  * So the entire OID of 1.1.0 will become .1.3.6.1.2.1.1.1.0 . You can also
  26.  * give the entire OID .
  27.  * 
  28.  * Since the mib is loaded you can also give string oids in the following formats
  29.  * .iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0 or system.sysDescr.0 or
  30.  * sysDescr.0 .
  31.  * 
  32.  * Options:
  33.  * [-d] option    Debug output.By default off.
  34.  * [-c] option     community String. By default "public".
  35.  * [-p] option     remote port no. By default 162.
  36.  * [-m] option     MIB files to be loaded. Used to find the type of object.
  37.  * enterprise      Object Identifier (sysObjectID for generic traps)
  38.  * agent-addr      the IP address of the agent sending the trap
  39.  * generic-trap    generic trap type INTEGER (0..6)
  40.  * specific-trap   specific code INTEGER(0..2147483647)
  41.  * timeticks       the value of object sysUpTime when the event occurred
  42.  * host mandatory  The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  43.  * OID  option     Give multiple no. of Object Identifiers with value.
  44.  * value           object-instance value . 
  45.  */
  46. import java.lang.*;
  47. import java.util.*;
  48. import java.net.*;
  49. import com.adventnet.snmp.beans.*;
  50. public class sendtrap {
  51.     public static void main(String args[]) {
  52.     // Take care of getting options
  53.     String usage = "sendtrap [-d] [-c community] [-p port] [-m MIB_files] host enterprise agent-addr generic-trap specific-trap timeticks [OID value] ..."; 
  54.     String options[] = { "-d", "-c", "-m", "-p"};
  55.     String values[] = { "None", null,null, null};
  56.       
  57.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  58.     if (opt.remArgs.length<6) opt.usage_error();
  59.     // Use an SNMP target bean to perform SNMP operations
  60.     SnmpTarget target = new SnmpTarget();
  61.  //To load MIBs from compiled file
  62.  target.setLoadFromCompiledMibs(true);
  63.  
  64.     if (values[0].equals("Set")) target.setDebug(true);
  65.     target.setTargetHost( opt.remArgs[0] );  // set destination hostname
  66.     target.setTargetPort( 162 );  // set destination port
  67.     if (values[1] != null) // set the community if specified
  68.         target.setCommunity( values[1] );
  69.     int trap_type=-1,specific_type=-1;
  70.     long time=0;
  71.     try {  // set the port parameter, if specified, and trap parameters
  72.         if (values[3] != null) 
  73.         target.setTargetPort( Integer.parseInt(values[3]) );
  74.         trap_type = Integer.parseInt(opt.remArgs[3]); 
  75.         specific_type = Integer.parseInt(opt.remArgs[4]);
  76.         time = (long) Integer.parseInt(opt.remArgs[5]);
  77.     } catch (NumberFormatException ex) {
  78.         System.err.println("Invalid Integer Argument "+ex);
  79.         opt.usage_error();
  80.     }
  81.     if (values[2] != null) try {  // Load the MIB files 
  82.         System.err.println("Loading MIBs: "+values[2]);
  83.         target.loadMibs(values[2]);
  84.     } catch (Exception ex) {
  85.         System.err.println("Error loading MIBs: "+ex);
  86. System.exit(1);
  87.     }
  88.     // Put together OID and variable value lists from command line
  89.     String oids[] = null, var_values[] = null;  // trap oids and values
  90.     int num_varbinds = 0;
  91.     for (int i=6;i<opt.remArgs.length;i+=2) { // add Variable Bindings
  92.         if (opt.remArgs.length < i+2) //need "{OID type value}"
  93.         opt.usage_error(); 
  94.         num_varbinds++;
  95.     }
  96.     oids = new String[num_varbinds];
  97.     var_values = new String[num_varbinds];
  98.     for (int i=0;i<num_varbinds;i++) { // add Variable Bindings
  99.         oids[i] = opt.remArgs[(2*i)+6];
  100.         var_values[i] = opt.remArgs[(2*i)+7];
  101.      }
  102.     try {  // use SnmpTarget methods to send trap w/ specified OIDs/values
  103.         target.setObjectIDList(oids);
  104.         target.snmpSendTrap(opt.remArgs[1], opt.remArgs[2], trap_type,
  105.                 specific_type, time, var_values);
  106.         // allow time to send trap before exiting
  107.         Thread.sleep(500);
  108.     } catch (Exception e) {
  109.         System.err.println("Error Sending Trap: "+e.getMessage());
  110.     }
  111.     System.exit(0);
  112.     
  113.     }
  114. }