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

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpv3gettwo.java,v 1.1 2002/06/15 14:42:11 ram Exp $ */
  2. /*
  3.  * @(#)Snmpv3GetTwo.java
  4.  * Copyright (c) 1999 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 do
  9.  * the basic SNMP operation GET using com.adventnet.snmp.snmp2 package of
  10.  * AdventNetSNMP api.
  11.  *
  12.  * The user could run this application by giving the following usage.
  13.  *  
  14.  * java Snmpv3GetTwo hostname OID [OID]
  15.  *
  16.  * where 
  17.  *
  18.  * hostname is the RemoteHost (agent).The Format is string without double qoutes/IpAddress.
  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.  * Example usage:
  25.  *
  26.  * java Snmpv3GetTwo adventnet 1.1.0 1.2.0 1.3.0 1.4.0 
  27.  *
  28.  */
  29. import java.lang.*;
  30. import java.util.*;
  31. import java.net.*;
  32. import com.adventnet.snmp.snmp2.*;
  33. import com.adventnet.snmp.snmp2.usm.*;
  34. public class Snmpv3GetTwo {
  35. public static void main(String args[]) {
  36.     
  37.         if( args.length < 2)
  38. {
  39. System.out.println("Usage : java Snmpv3GetTwo hostname OID ");
  40. System.exit(0);
  41. }
  42.         
  43. // get the hostname and the OID
  44. String remoteHost = args[0];
  45.         String OID = args[1];       
  46. String userName = "testuser";
  47. String authPassword = "test";
  48. String privPassword = "";
  49. String contextName = "testmachine";
  50. String contextID = "testing";
  51. // Start SNMP API
  52.         SnmpAPI api = new SnmpAPI();
  53. api.setDebug(true);
  54. // Open session
  55. SnmpSession session = new SnmpSession(api); 
  56. try 
  57. {
  58.             session.open();
  59.         } 
  60. catch (SnmpException e) 
  61. {
  62.     System.err.println("Error opening socket: "+e);
  63. }
  64. SnmpEngineEntry engineentry = new SnmpEngineEntry(remoteHost, session.getRemotePort());
  65. SnmpEngineTable enginetable = api.getSnmpEngine();
  66. enginetable.addEntry(engineentry);
  67. engineentry.discoverEngineID(session);
  68. USMUserEntry entry = new USMUserEntry(userName.getBytes(), engineentry.getEngineID());
  69. entry.setAuthProtocol(USMUserEntry.MD5_AUTH);  
  70. entry.setAuthPassword(authPassword.getBytes());
  71. byte[] authKey = USMUtils.password_to_key(entry.getAuthProtocol(),
  72. authPassword.getBytes(), 
  73. authPassword.getBytes().length,
  74. engineentry.getEngineID());
  75. entry.setAuthKey(authKey);
  76. //entry.setPrivProtocol(USMUserEntry.CBC_DES);
  77. //entry.setPrivPassword(privPassword.getBytes());
  78. entry.setEngineEntry(engineentry);
  79. entry.setSecurityLevel(Snmp3Message.AUTH_NO_PRIV);
  80. SecurityProvider provider = api.getSecurityProvider();
  81. USMUserTable userTable= (USMUserTable)provider.getTable(3);
  82. userTable.addEntry(entry);
  83. entry.timeSync(session);
  84. //Build GET Request PDU
  85. SnmpPDU pdu = new SnmpPDU();
  86. //get the value from the command line
  87. UDPProtocolOptions option = new UDPProtocolOptions(remoteHost); 
  88. pdu.setProtocolOptions(option); 
  89. // port number of the remote agent
  90. option.setRemotePort(8001);
  91. // SNMP version
  92. session.setVersion(3);
  93. pdu.setCommand(SnmpAPI.GET_REQ_MSG);
  94. pdu.setSecurityModel(USM_SECURITY_MODEL);
  95. pdu.setUserName(userName.getBytes());
  96.         pdu.setContextName(contextName.getBytes());
  97.         pdu.setContextID(contextID.getBytes());
  98. // add OIDs
  99. for (int i=1; i<args.length; i++)
  100. {
  101.     SnmpOID oid = new SnmpOID(args[i]);
  102.     pdu.addNull(oid);
  103. }    
  104. try 
  105. {
  106.     // Send PDU and receive response PDU
  107.      SnmpPDU result = session.syncSend(pdu);
  108.          } 
  109. catch (SnmpException e) 
  110. {
  111.      System.err.println("Error sending SNMP request: "+e);
  112. }    
  113. // print the response pdu varbinds
  114. System.out.println(result.printVarBinds());
  115. // close session
  116. session.close();
  117. // stop api thread
  118. api.close();
  119.  }
  120. }