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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv2cinformreqd.src,v 1.4.2.3 2009/01/28 13:30:10 tmanoj Exp $ */
  2. /*
  3.  * @(#)snmpv2cinformreqd.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 INFORM REQUESTs 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 snmpv2cinformreqd [options]
  13.  *
  14.  * java snmpv2cinformreqd [-d] [-p port][-c community]
  15.  * e.g. 
  16.  * java snmpv2cinformreqd -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 snmpv2cinformreqd implements SnmpClient {
  28.   static SnmpAPI api;
  29.   public static void main(String args[]) {
  30.        
  31.     // Take care of getting options
  32.     String usage = "snmpv2cinformreqd [-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.     // Enable the debug mode.
  39.     api.setDebug(true);
  40.     if (values[0].equals("Set")) 
  41.     {
  42.         api.setDebug( true );
  43.     }
  44.       
  45.     if (opt.remArgs.length>0) opt.usage_error();
  46.     // Open session 
  47.     SnmpSession session = new SnmpSession(api);
  48.     session.addSnmpClient(new snmpv2cinformreqd());
  49.     UDPProtocolOptions ses_opt = new UDPProtocolOptions();
  50.     // set local port
  51.     try {
  52.         if (values[1] != null)
  53.         {
  54.             ses_opt.setLocalPort( Integer.parseInt(values[1]) );        
  55.         }
  56.         else
  57.         {
  58.             ses_opt.setLocalPort(162);
  59.         }
  60.     }
  61.     catch (NumberFormatException ex) {
  62.       System.err.println("Invalid Integer Arg");
  63.     }
  64.     session.setProtocolOptions(ses_opt);
  65.       
  66.     // set community
  67.     if(values[2] != null)
  68.     {
  69.       session.setCommunity(values[2]);
  70.     }    
  71.     // Open the session
  72.     try { 
  73.         session.open();
  74.         System.out.println ("Waiting to receive SNMP Inform requestsn");
  75.     }
  76.     catch (SnmpException e) {
  77.       System.err.println(e);
  78.       System.exit(1);
  79.     }
  80.   }
  81.     
  82.   public boolean authenticate(SnmpPDU pdu, String community){
  83.       return (pdu.getCommunity().equals(community));
  84.   }
  85.   
  86.     /*
  87.      * Callback method that is invoked on receiving an SNMP Inform request message
  88.      */
  89.   public boolean callback(SnmpSession session,SnmpPDU pdu, int requestID) {
  90.     // Validate SNMP command type
  91.     if (pdu.getCommand() == api.INFORM_REQ_MSG) 
  92.     {
  93.       System.out.println("inform request received from: " + 
  94.                         pdu.getProtocolOptions().getSessionId() +
  95.                         ", community: " + pdu.getCommunity());
  96.       System.out.println("VARBINDS:");
  97.       // print varbinds
  98.       for (Enumeration e = pdu.getVariableBindings().elements();
  99.                                                 e.hasMoreElements();)
  100.       {
  101.         System.out.println(((SnmpVarBind) e.nextElement()).toTagString());
  102.       }
  103.     }
  104.     else
  105.     {
  106.       System.err.println("Unexpected SNMP message recieved.");
  107.     }
  108.     System.out.println(""); 
  109.     return true;
  110.   }
  111.  
  112.   public void debugPrint(String debugOutput){
  113.     System.out.println(debugOutput);
  114.     return;    
  115.   }
  116. }