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

SNMP编程

开发平台:

C/C++

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