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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmptrapd.src,v 1.4.2.3 2009/01/28 13:24:00 tmanoj 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. {
  29.     static SnmpAPI api;
  30.     
  31.     public static void main(String args[])
  32.     {
  33.         // Take care of getting options
  34.         String usage = "snmptrapd [-d] [-p port][-c community]";
  35.         String options[] =
  36.         {
  37.             "-d", "-p", "-c"
  38.         };
  39.         String values[] =
  40.         {
  41.             "None", null, null
  42.         };
  43.         ParseOptions opt = new ParseOptions(args,options,values, usage);
  44.         // Start SNMP API
  45.         api = new SnmpAPI();
  46.         if (values[0].equals("Set"))
  47.         {
  48.             api.setDebug( true );
  49.         }
  50.         if (opt.remArgs.length>0) opt.usage_error();
  51.         // Open session 
  52.         SnmpSession session = new SnmpSession(api);
  53.         session.addSnmpClient(new snmptrapd());
  54.         
  55.         // set local port
  56.         try
  57.         {
  58.             UDPProtocolOptions ses_opt = new UDPProtocolOptions();
  59.             if (values[1] != null)
  60.             {
  61.                 ses_opt.setLocalPort( Integer.parseInt(values[1]) );
  62.             }
  63.             else 
  64.             {
  65.                 ses_opt.setLocalPort(162);
  66.             }
  67.             session.setProtocolOptions(ses_opt);
  68.         }
  69.         catch (NumberFormatException ex)
  70.         {
  71.             System.err.println("Invalid local port: " + values[1] );
  72.             System.exit(1);
  73.         }
  74.         // set community
  75.         if(values[2] != null)
  76.         {
  77.             session.setCommunity(values[2]);
  78.         }
  79.         // Open the session
  80.         try
  81.         {
  82.             session.open();
  83.         }
  84.         catch (SnmpException e)
  85.         {
  86.             System.err.println(e);
  87.             System.exit(1);
  88.         }
  89.     }
  90.     public boolean authenticate(SnmpPDU pdu, String community)
  91.     {
  92.         return (pdu.getCommunity().equals(community));
  93.     }
  94.     public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID)
  95.     {
  96.         // check trap version
  97.         if(pdu == null)
  98.         {
  99.             return false;
  100.         }
  101.         if (pdu.getCommand() == api.TRP_REQ_MSG)
  102.         {
  103.             System.out.print("Trap received from: ");
  104.             System.out.print(pdu.getProtocolOptions().getSessionId());
  105.             System.out.println(", community: " + pdu.getCommunity());
  106.             System.out.println("Enterprise: " + pdu.getEnterprise());
  107.             System.out.println("Agent: " + pdu.getAgentAddress().getHostAddress());
  108.             System.out.println("TRAP_TYPE: " + pdu.getTrapType());
  109.             System.out.println("SPECIFIC NUMBER: " + pdu.getSpecificType());
  110.             System.out.println("Time: " + pdu.getUpTime()+"nVARBINDS:");
  111.             // print varbinds
  112.             Enumeration e = pdu.getVariableBindings().elements();
  113.             while(e.hasMoreElements())
  114.             {
  115.                 System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  116.             }
  117.         }
  118.         else if(pdu.getCommand() == api.TRP2_REQ_MSG)
  119.         {
  120.             System.out.print("Trap received from: ");
  121.             System.out.print(pdu.getProtocolOptions().getSessionId());
  122.             System.out.println(", community: " + pdu.getCommunity());
  123.             Enumeration e = pdu.getVariableBindings().elements();
  124.             while(e.hasMoreElements())
  125.             {
  126.                 System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  127.             }
  128.         }
  129.         else
  130.         {
  131.             System.err.println("Non trap PDU received.");
  132.         }
  133.         System.out.println(""); // a blank line between traps
  134.         return true;
  135.     }
  136.     public void debugPrint(String debugOutput)
  137.     {
  138.         System.out.println(debugOutput);
  139.         return;    
  140.     }
  141. }