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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv1trap.java,v 1.4 2002/09/09 05:43:43 pushpar Exp $ */
  2. /*
  3.  * @(#)snmpv1trap.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 send a
  9.  * v1 Trap message using com.adventnet.snmp.snmp2 and com.adventnet.snmp.mib
  10.  * packages of AdventNetSNMP2 api.
  11.  * The user could run this application by giving any one of the following usage.
  12.  *  
  13.  * java snmpv1trap [options] [-m mibfile] hostname enterprise-oid agent-addr generic-trap specific-trap 
  14.  *      timeticks [OID value] ...
  15.  *
  16.  * java snmpv1trap [-d] [-c community] [-p port] [-m MIB_files] host enterprise agent-addr generic-trap specific-trap timeticks [OID value] ...
  17.  * e.g. 
  18.  * java snmpv1trap -p 162 -c public [-m ../../../mibs/RFC1213-MIB] adventnet 1.2.0 adventnet 0 6 1000 1.5.0 advent
  19.  * 
  20.  * If the oid is not starting with a dot (.) it will be prefixed by .1.3.6.1.2.1 .
  21.  * So the entire OID of 1.1.0 will become .1.3.6.1.2.1.1.1.0 . You can also
  22.  * give the entire OID .
  23.  * 
  24.  * Since the mib is loaded you can also give string oids in the following formats
  25.  * .iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0 or system.sysDescr.0 or
  26.  * sysDescr.0 .
  27.  * 
  28.  * Options:
  29.  * [-d] option     Debug output. By default off.
  30.  * [-c] option     community String. By default "public".
  31.  * [-p] option     remote port no. By default 162.
  32.  * [-m] option     MIB files to be loaded. Used to find the type of object.
  33.  * enterprise      Object Identifier (sysObjectID for generic traps)
  34.  * agent-addr      the IP address of the agent sending the trap
  35.  * generic-trap    generic trap type INTEGER (0..6)
  36.  * specific-trap   specific code INTEGER(0..2147483647)
  37.  * timeticks       the value of object sysUpTime when the event occurred
  38.  * host mandatory  The RemoteHost (agent).Format (string without double qoutes/IpAddress).
  39.  * OID  option     Give multiple no. of Object Identifiers with value.
  40.  * value           object-instance value . 
  41.  */
  42. import java.lang.*;
  43. import java.util.*;
  44. import java.net.*;
  45. import com.adventnet.snmp.snmp2.*;
  46. import com.adventnet.snmp.mibs.*;
  47. import ParseOptions;
  48. public class snmpv1trap {
  49.   public static void main(String args[]) {
  50.     SnmpAPI api;
  51. // Take care of getting options
  52.     String usage = "snmpv1trap [-d] [-c community] [-p port] [-m MIB_files] host enterprise agent-addr generic-trap specific-trap timeticks [OID value] ..."; 
  53.     String options[] = { "-d", "-c", "-p" , "-m"};
  54.     String values[] = { "None", null, null, null};
  55.       
  56.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  57.     if (opt.remArgs.length<6) opt.usage_error();
  58.     // Start SNMP API
  59.     api = new SnmpAPI();
  60.     if (values[0].equals("Set")) api.setDebug( true );
  61. // Loading MIBS - For addtional mibs to load please modify this by yourself.
  62. MibOperations mibOps = new MibOperations();
  63. //To load MIBs from compiled file
  64. mibOps.setLoadFromCompiledMibs(true);
  65. if (values[3] != null) try {
  66.     System.err.println("Loading MIBs: "+values[3]);
  67.     mibOps.loadMibModules(values[3]);
  68. } catch (Exception ex) {
  69.     System.err.println("Error loading MIBs: "+ex.getMessage());
  70.             System.exit(1);
  71. }
  72. // Open session
  73.     SnmpSession session = new SnmpSession(api);
  74.     // set remote Host
  75.     session.setPeername( opt.remArgs[0] );
  76. // set community
  77. if (values[1] != null) session.setCommunity( values[1] );
  78. //set remote Port if needed.
  79. try {
  80.     if (values[2] != null) 
  81. session.setRemotePort( Integer.parseInt(values[2]) );
  82. else 
  83. session.setRemotePort(162);
  84. }
  85.     catch (NumberFormatException ex) {
  86. System.err.println("Invalid Integer Arg. for port number");
  87. System.exit(1);
  88.     }
  89. // Build SNMPv1 Trap PDU
  90.     SnmpPDU pdu = new SnmpPDU();
  91.     pdu.setCommand( api.TRP_REQ_MSG );
  92.     // fill in v1 trap PDU fields
  93.     try {
  94.   // set enterprise OID
  95.       pdu.setEnterprise(mibOps.getSnmpOID(opt.remArgs[1]));
  96.   // set agent address
  97.       pdu.setAgentAddress(InetAddress.getByName(opt.remArgs[2]));
  98.   // set generic trap type
  99.       pdu.setTrapType(Integer.parseInt(opt.remArgs[3]));
  100.   // set specific code
  101.       if (opt.remArgs.length>4) 
  102.       pdu.setSpecificType(Integer.parseInt(opt.remArgs[4]));
  103.   // set time-stamp
  104.       if (opt.remArgs.length>5) 
  105.       pdu.setUpTime(Integer.parseInt(opt.remArgs[5]));
  106.     } catch (Exception ex) { 
  107.       System.err.println("error in one or more required fields: "+ex);
  108.       opt.usage_error();
  109.     }
  110.     // add Variable Bindings
  111. for (int i=6;i<opt.remArgs.length;) { 
  112.        if (opt.remArgs.length < i+2) opt.usage_error(); //need "{OID value}"
  113. SnmpOID oid = mibOps.getSnmpOID(opt.remArgs[i++]);
  114. if (oid == null) {
  115.                     System.exit(1);
  116. }
  117.   else
  118. {
  119. // Get the MibNode for this SnmpOID instance if found 
  120. MibNode node = mibOps.getMibNode(oid);
  121. if (node == null) { 
  122. System.err.println("Failed. MIB node unavailable for OID:"+ oid);
  123.                                 System.exit(1);
  124.                         }
  125. else
  126. {
  127. // Get the syntax associated with this node
  128. if (node.getSyntax() == null) 
  129.     System.err.println("Failed. OID not a leaf node .");
  130. else
  131. {
  132. SnmpVarBind varbind = null;
  133. try {
  134. // Get the SnmpVar instance for the value
  135. SnmpVar var = node.getSyntax().createVariable(opt.remArgs[i++]);
  136. // Create SnmpVarBind instance 
  137. varbind = new SnmpVarBind(oid,var);
  138. } catch (SnmpException ex) { 
  139. System.err.println("Error creating variable."); 
  140. System.exit(1);
  141. }
  142.                     // Add the variable-bindings to the PDU
  143. pdu.addVariableBinding(varbind);   
  144. }
  145. }
  146. }
  147.     } // end of add variable bindings
  148.     try { 
  149. // open session
  150. session.open(); 
  151. // Send Trap PDU
  152. session.send(pdu); 
  153.     } catch (SnmpException e) {
  154. System.err.println("Sending PDU : " + e.getMessage());
  155. System.exit(1);
  156.     }
  157. // close session
  158. session.close();
  159. // stop api thread
  160. api.stop();
  161.     System.exit(0);
  162.   }
  163. }