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

SNMP编程

开发平台:

C/C++

  1. /* $Id: SnmpSendTrap.java,v 1.1 2002/06/15 14:43:37 ram Exp $ */
  2. /*
  3.  * @(#)SnmpSendTrap.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 a tutorial example program to explain how to write an application to send a
  9.  * v1 Trap message using com.adventnet.snmp.mibs package of AdventNetSNMP2 api.
  10.  * 
  11.  * 
  12.  *
  13.  * The user could run this application by giving the following usage.
  14.  *  
  15.  * java SnmpSendTrap mibfile hostname enterprise agent-addr generic-trap specific-trap timeticks OID value
  16.  *
  17.  * where 
  18.  *
  19.  * mibfile is the name of the MIB file that is loaded. To load multiple mibs give within double quotes files seperated
  20.  * by a blank space.
  21.  *
  22.  * hostname is the RemoteHost (agent).The Format is string without double qoutes/IpAddress.
  23.  *
  24.  * OID is the Object Identifier. Multiple OIDs can also be given.
  25.  * The entire OID can be given or it can be given in the form of 1.1.0.
  26.  * If the oid is not starting with a dot (.) it will be prefixed by .1.3.6.1.2.1 .
  27.  * So the entire OID of 1.1.0 will become .1.3.6.1.2.1.1.1.0 .
  28.  *
  29.  * enterprise is the Object Identifier (sysObjectID for generic traps)
  30.  *
  31.  * agent-addr is the IP address of the agent sending the trap
  32.  *
  33.  * generic-trap is the generic trap type INTEGER (0..6)
  34.  *
  35.  * specific-trap is the specific trap code INTEGER(0..2147483647)
  36.  *
  37.  * timeticks is the value of object sysUpTime when the event occurred
  38.  *
  39.  * value is the object instance value to be set 
  40.  * 
  41.  *
  42.  *
  43.  *
  44.  */
  45. import java.lang.*;
  46. import java.util.*;
  47. import java.net.*;
  48. import com.adventnet.snmp.snmp2.*;
  49. import com.adventnet.snmp.mibs.*;
  50. public class SnmpSendTrap {
  51. public static void main(String args[]) {
  52.     
  53.             if( args.length < 8)
  54. {
  55. System.out.println("Usage : java SnmpSendTrap mibfile hostname enterprise agent-addr generic-trap specific-trap timeticks OID value ");
  56. System.exit(0);
  57. }
  58.         
  59. //  Take care of getting all the parameters
  60.     
  61.     String mibfile = args[0];
  62.     String remoteHost = args[1];
  63.     String enterprise = args[2];    
  64.     String agentaddr = args[3];
  65.     String generictrap = args[4];
  66.     String specifictrap = args[5];
  67.     String timeticks = args[6];
  68.     String OID = args[7];
  69.     String value = args [8];
  70.  // Start SNMP API
  71.         SnmpAPI api;
  72.         api = new SnmpAPI();
  73.         api.start();
  74. api.setDebug( true );
  75. // Open session
  76. SnmpSession session = new SnmpSession(api); 
  77. try {
  78.             session.open();
  79.         } catch (SnmpException e ) {
  80.     System.err.println("Error opening socket: "+e);
  81.    }
  82. // set remote Host 
  83. session.setPeername(remoteHost);
  84. // set remote port
  85. session.setRemotePort(8001);
  86. //load the MIB file
  87. MibOperations mibops = new MibOperations();
  88. try {
  89. mibops.loadMibModules(mibfile);
  90. } catch (Exception ex){
  91.      System.err.println("Error loading MIBs: "+ex);
  92. }
  93. // Build SNMPv1 Trap PDU
  94. SnmpPDU pdu = new SnmpPDU();
  95. pdu.setCommand( api.TRP_REQ_MSG );
  96. // fill in v1 trap PDU fields
  97. SnmpOID oids = new SnmpOID(enterprise);
  98.       try {
  99.   pdu.setEnterprise(oids); 
  100.   pdu.setAgentAddress(InetAddress.getByName(agentaddr));
  101.   pdu.setTrapType(Integer.parseInt(generictrap));
  102.   pdu.setSpecificType(Integer.parseInt(specifictrap));
  103.   pdu.setUpTime(Integer.parseInt(timeticks));
  104.       
  105.       }
  106.        catch (Exception ex) { 
  107.           System.err.println("error in one or more required fields: "+ex);
  108.        }
  109.        // add OID
  110. SnmpOID oid = mibops.getSnmpOID(OID);
  111. MibNode node = mibops.getMibNode(oid);
  112. // create varbinds
  113. SnmpVarBind varbind = null;
  114.         
  115.         try {
  116.     SnmpVar var = node.getSyntax().createVariable(value);
  117.     varbind = new SnmpVarBind(oid,var);
  118. } catch (SnmpException ex) { 
  119.     System.err.println("Error creating variable."); 
  120. }
  121. pdu.addVariableBinding(varbind);    
  122. try {
  123.     // Send PDU and receive response PDU
  124.       session.send(pdu);
  125.          } catch (SnmpException e) {
  126.      System.err.println("Error sending PDU: "+e);
  127.    }    
  128. // print the response pdu varbinds
  129. System.out.println(mibops.toString(pdu));
  130.  // close session
  131. session.close();
  132. // stop api thread
  133. api.close();
  134.  }
  135. }