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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmptrapd.src,v 1.4.2.3 2009/01/28 13:29:38 prathika Exp $ */
  2. /*
  3.  * @(#)snmptrapd.java
  4.  * Copyright (c) 1996-2009 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  */
  7. /**
  8.  * This is an example program for receiving traps using the
  9.  * com.adventnet.snmp.snmp2 package of AdventNetSNMP2 api.
  10.  * The user could run this application by giving any one of the following usage.
  11.  *  
  12.  * java snmptrapd [options]
  13.  *
  14.  * java snmptrapd [-d] [-p port][-c community]
  15.  * e.g. 
  16.  * java snmptrapd -p 162 -c public 
  17.  *
  18.  * Options:
  19.  * [-d]                - Debug output. By default off.
  20.  * [-p] <port>         - remote port no. By default 162.
  21.  * [-c] <community>    - community String. By default "public".               
  22.  */
  23. import java.lang.*;
  24. import java.util.*;
  25. import java.net.*;
  26. import com.adventnet.snmp.snmp2.*;
  27. public class snmptrapd implements SnmpClient {
  28.     static SnmpAPI api;
  29.     public static void main(String args[]) {
  30.         
  31.         // Take care of getting options
  32.         String usage = "snmptrapd [-d] [-p port][-c community]";
  33.         String options[] = { "-d", "-p", "-c"};
  34.         String values[] = { "None", null, null};
  35.         ParseOptions opt = new ParseOptions(args,options,values, usage);
  36.         // Start SNMP API
  37.         api = new SnmpAPI();
  38.         if (values[0].equals("Set")) api.setDebug( true );
  39.         
  40.         if (opt.remArgs.length>0) opt.usage_error();
  41.         // Open session 
  42.         SnmpSession session = new SnmpSession(api);
  43.         session.setTransportProvider("com.adventnet.snmp.snmp2.TcpTransportImpl");
  44.         session.addSnmpClient(new snmptrapd());
  45.         
  46.         // Options that will be used for communication. This can be modified by the user 
  47.         // according to his need.
  48.         ProtocolOptions params = null;
  49.         try {
  50.             if(values[1] != null)   {
  51.                 params = new TcpProtocolOptionsImpl(null, 0, Integer.parseInt(values[1]));
  52.             }
  53.             else    {
  54.                 params = new TcpProtocolOptionsImpl(null, 0, 162);
  55.             }
  56.         }
  57.         catch (NumberFormatException ex) {
  58.             System.err.println("Invalid Integer Arg");
  59.         }
  60.         session.setProtocolOptions(params);
  61.       
  62.         // set community
  63.         if(values[2] != null)
  64.             session.setCommunity(values[2]);
  65.         
  66.         // Open the session
  67.         try { session.open(); }
  68.         catch (SnmpException e) {
  69.             System.err.println(e);
  70.             System.exit(1);
  71.         }
  72.     }
  73.     
  74.     public boolean authenticate(SnmpPDU pdu, String community){
  75.         return (pdu.getCommunity().equals(community));
  76.     }
  77.   
  78.     public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID){
  79.         // check trap version
  80.         if(pdu == null)
  81.             return false;
  82.         if (pdu.getCommand() == api.TRP_REQ_MSG) {
  83.             System.out.println("Trap received from: "+
  84.                 ((TcpProtocolOptionsImpl)(pdu.getProtocolOptions())).getRemoteHost()+", community: " + pdu.getCommunity());
  85.             System.out.println("Enterprise: " + pdu.getEnterprise());
  86.             System.out.println("Agent: " + pdu.getAgentAddress());
  87.             System.out.println("TRAP_TYPE: " + pdu.getTrapType());
  88.             System.out.println("SPECIFIC NUMBER: " + pdu.getSpecificType());
  89.             System.out.println("Time: " + pdu.getUpTime()+"nVARBINDS:");
  90.             // print varbinds
  91.             for (Enumeration e = pdu.getVariableBindings().elements();e.hasMoreElements();)
  92.                 System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  93.         }
  94.         else if(pdu.getCommand() == api.TRP2_REQ_MSG)
  95.         {
  96.             System.out.println("Trap received from: "+
  97.                 ((TcpProtocolOptionsImpl)(pdu.getProtocolOptions())).getRemoteHost()+", community: " + pdu.getCommunity());
  98.             for (Enumeration e = pdu.getVariableBindings().elements();e.hasMoreElements();)
  99.                 System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  100.         }
  101.         else
  102.             System.err.println("Non trap PDU received.");
  103.         System.out.println(""); // a blank line between traps
  104.         return true;
  105.   
  106.     }
  107.   
  108.     public void debugPrint(String debugOutput){
  109.         System.out.println(debugOutput);
  110.         return;    
  111.     }
  112.     
  113. }