SNMPSet.java revision e75c2484bff064fbbf51e92aed4f37b08e6427b7
78a072e1b56619e3230735ae073668311232ec94vboxsync/*
78a072e1b56619e3230735ae073668311232ec94vboxsync * CDDL HEADER START
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * The contents of this file are subject to the terms of the
78a072e1b56619e3230735ae073668311232ec94vboxsync * Common Development and Distribution License, Version 1.0 only
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync * (the "License"). You may not use this file except in compliance
78a072e1b56619e3230735ae073668311232ec94vboxsync * with the License.
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * You can obtain a copy of the license at
78a072e1b56619e3230735ae073668311232ec94vboxsync * trunk/opends/resource/legal-notices/OpenDS.LICENSE
d0318084c32279bf313f47358242cd61ada858d6vboxsync * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync * See the License for the specific language governing permissions
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync * and limitations under the License.
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * When distributing Covered Code, include this CDDL HEADER in each
78a072e1b56619e3230735ae073668311232ec94vboxsync * file and include the License file at
78a072e1b56619e3230735ae073668311232ec94vboxsync * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
78a072e1b56619e3230735ae073668311232ec94vboxsync * add the following below this CDDL HEADER, with the fields enclosed
78a072e1b56619e3230735ae073668311232ec94vboxsync * by brackets "[]" replaced with your own identifying information:
78a072e1b56619e3230735ae073668311232ec94vboxsync * Portions Copyright [yyyy] [name of copyright owner]
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * CDDL HEADER END
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * Copyright 2008 Sun Microsystems, Inc.
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync// OpenDS imports
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport org.opends.server.snmp.DIRECTORY_SERVER_MIBOidTable;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync// OpenDMK imports
78a072e1b56619e3230735ae073668311232ec94vboxsync//
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.SnmpDefinitions;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.SnmpVarBindList;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.SnmpEngine;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.SnmpEngineParameters;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.SnmpOid;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.SnmpOidTableSupport;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.SnmpStatusException;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.SnmpString;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.SnmpVarBind;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.manager.SnmpRequest;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.manager.SnmpSession;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsyncimport com.sun.management.snmp.manager.SnmpPeer;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.manager.SnmpParameters;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.manager.usm.SnmpUsmPeer;
78a072e1b56619e3230735ae073668311232ec94vboxsyncimport com.sun.management.snmp.manager.usm.SnmpUsmParameters;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync/**
78a072e1b56619e3230735ae073668311232ec94vboxsync * This class perform a SNMP set operation.
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsyncpublic class SNMPSet {
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /**
78a072e1b56619e3230735ae073668311232ec94vboxsync * Gets the calling arguments.
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * @param args SNMP agent version + SNMP agent host + SNMP agent port
78a072e1b56619e3230735ae073668311232ec94vboxsync * @return 0 if the init succeeded or 1 if the init failed
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync public int init(String[] args) {
78a072e1b56619e3230735ae073668311232ec94vboxsync int rc = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync if (args.length < 5) {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync // Missing arguments
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync System.out.println(
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync "usage: " +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -v <SNMP version>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -h <remoteHost>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -p <port>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -o <oids>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -c <community>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -u <user>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -l <securityLevel>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -f <securityFile>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -s <connectionStatus>" +
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync " -n <checkOIDs>");
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync rc = 1;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync } else {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync for (int i = 0; i < args.length; i++) {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync String opt = args[i];
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync String val = args[i + 1];
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync switch (opt.charAt(1)) {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'v':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync version = new Integer(val).intValue();
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'h':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync remoteHost = val;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'p':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync port = new Integer(val).intValue();
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'o':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync oids = val;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'c':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync community = val;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'u':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync user = val;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync break;
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync case 'l':
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync if (val.compareTo("noauthnopriv") == 0) {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync securityLevel = SnmpDefinitions.noAuthNoPriv;
78a072e1b56619e3230735ae073668311232ec94vboxsync } else if (val.compareTo("authnopriv") == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync securityLevel = SnmpDefinitions.authNoPriv;
78a072e1b56619e3230735ae073668311232ec94vboxsync } else if (val.compareTo("authpriv") == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync securityLevel = SnmpDefinitions.authPriv;
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "Unknown security level " + opt.charAt(1) + ".");
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case 'f':
78a072e1b56619e3230735ae073668311232ec94vboxsync securityFile = val;
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case 's':
78a072e1b56619e3230735ae073668311232ec94vboxsync connectStatus = val;
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case 'n':
78a072e1b56619e3230735ae073668311232ec94vboxsync validOIDs = new Boolean(val).booleanValue();
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync default:
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("Unknown option -" + opt.charAt(1) + ".");
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (rc == 1) {
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync i = i + 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (rc == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("init() of SNMPSet succeeded");
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("init() of SNMPSet failed");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync return rc;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /**
78a072e1b56619e3230735ae073668311232ec94vboxsync * Open SNMP connection with SNMP agent.
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * @return 0 if the connect succeeded or 1 if the connect failed
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync public int connect() {
78a072e1b56619e3230735ae073668311232ec94vboxsync int rc = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync try {
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync // The OidTable generated by mibgen when compiling DIRECTORY_SERVER_MIB
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync final SnmpOidTableSupport oidTable = new DIRECTORY_SERVER_MIBOidTable();
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Specify the OidTable containing all the DIRECTORY_SERVER_MIB knowledge
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync SnmpOid.setSnmpOidTable(oidTable);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync switch (version) {
78a072e1b56619e3230735ae073668311232ec94vboxsync case 1:
78a072e1b56619e3230735ae073668311232ec94vboxsync case 2:
78a072e1b56619e3230735ae073668311232ec94vboxsync // Create the session
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync session = new SnmpSession("Set V" + version + " session");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Create an SnmpPeer object for representing the entity
78a072e1b56619e3230735ae073668311232ec94vboxsync // to communicate with.
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync final SnmpPeer agent = new SnmpPeer(remoteHost, port);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Specify the read and write community to be used
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync final SnmpParameters params = new SnmpParameters(
78a072e1b56619e3230735ae073668311232ec94vboxsync community,
78a072e1b56619e3230735ae073668311232ec94vboxsync community);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Specify the protocol version
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync switch (version) {
78a072e1b56619e3230735ae073668311232ec94vboxsync case 1:
78a072e1b56619e3230735ae073668311232ec94vboxsync params.setProtocolVersion(SnmpDefinitions.snmpVersionOne);
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case 2:
78a072e1b56619e3230735ae073668311232ec94vboxsync params.setProtocolVersion(SnmpDefinitions.snmpVersionTwo);
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync default:
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Associate the parameters with the agent
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync agent.setTimeout(timeOut);
78a072e1b56619e3230735ae073668311232ec94vboxsync agent.setMaxTries(maxRetries);
78a072e1b56619e3230735ae073668311232ec94vboxsync agent.setParams(params);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Set the default peer (agent) to a SnmpSession
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync session.setDefaultPeer(agent);
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync case 3:
78a072e1b56619e3230735ae073668311232ec94vboxsync // Custom engine parameters
78a072e1b56619e3230735ae073668311232ec94vboxsync final SnmpEngineParameters engineParameters =
78a072e1b56619e3230735ae073668311232ec94vboxsync new SnmpEngineParameters();
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Activate encryption
78a072e1b56619e3230735ae073668311232ec94vboxsync engineParameters.activateEncryption();
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Set the security file
78a072e1b56619e3230735ae073668311232ec94vboxsync engineParameters.setSecurityFile(securityFile);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Create the session
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync //
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync session = new SnmpSession(
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync engineParameters,
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync null,
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync "Set V3 session",
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync null);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // SNMP V3 introduces the notion of SnmpEngine. An engine is
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // associated to the session. Other objects might need
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // the engine. You can access it using getEngine method.
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync //
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync final SnmpEngine engine = session.getEngine();
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // Create an SnmpUsmPeer object for representing the entity
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // to communicate with
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync //
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync final SnmpUsmPeer agentV3 = new SnmpUsmPeer(engine, remoteHost, port);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // Create USM parameters for the principal defaultuser (user used when
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // requests are sent: the defaultuser is a template and for this
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // reason we cannot find it under the user mib (not created as a user)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync //
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync final SnmpUsmParameters paramsV3 = new SnmpUsmParameters(
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync engine,
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync user);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync // Set the security level authentication but without privacy
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync //
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync paramsV3.setSecurityLevel(securityLevel);
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync // Set the context name
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync //
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync if (community.compareTo("null") != 0) {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync paramsV3.setContextName(community.getBytes());
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync }
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync // Set the contextEngineId discovered by the peer upon
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync // its creation
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync //
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync paramsV3.setContextEngineId(agentV3.getEngineId().getBytes());
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync // Associate the parameters with the agent
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync //
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync agentV3.setTimeout(timeOut);
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync agentV3.setMaxTries(maxRetries);
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync agentV3.setParams(paramsV3);
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync // Discover timeliness of creation and boot
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync //
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync try {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync agentV3.processUsmTimelinessDiscovery();
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync } catch (SnmpStatusException e) {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync if (connectStatus.compareTo("SnmpStatusException") == 0) {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync System.out.println(
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync "connect() of SNMPSet catched as expected a " +
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync "SNMP status exception: " + e.getMessage() + "\"");
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync } else {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync System.out.println(
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync "connect() of SNMPSet should not catch a " +
78a072e1b56619e3230735ae073668311232ec94vboxsync "SNMP status exception: " + e.getMessage() + "\"");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync } catch (Exception e) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "connect() of SNMPSet catched an unexpected exception: " +
78a072e1b56619e3230735ae073668311232ec94vboxsync e.getMessage() + "\"");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync if (rc == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Set the default peer (agent) to a SnmpSession
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync session.setDefaultPeer(agentV3);
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync default:
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "connect() of SNMPSet: Unknown SNMP version: "
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync + version + " .");
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync } catch (Exception e) {
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "connect() of SNMPSet catched an unexpected exception: " +
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync e.getMessage() + "\"");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (rc == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("connect() of SNMPSet succeeded");
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("connect() of SNMPSet succeeded");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync return rc;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /**
78a072e1b56619e3230735ae073668311232ec94vboxsync * Perform an SNMP set request on SNMP agent.
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * @return 0 if the setRequest succeeded or 1 if the setRequest failed
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync public int setRequest() {
78a072e1b56619e3230735ae073668311232ec94vboxsync int rc = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync try {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Build the list of variables you want to query
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync final SnmpVarBindList list = new SnmpVarBindList("Get varbind list");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Write one specific OID
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync SnmpVarBind oid = new SnmpVarBind(oids);
78a072e1b56619e3230735ae073668311232ec94vboxsync oid.setSnmpValue(new SnmpString("myValue"));
78a072e1b56619e3230735ae073668311232ec94vboxsync list.addVarBind(oid);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Make the SNMP set request
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "setRequest() of SNMPSet: Start SNMP V" + version +
78a072e1b56619e3230735ae073668311232ec94vboxsync " GET request for SNMP agent on \"" + remoteHost +
78a072e1b56619e3230735ae073668311232ec94vboxsync "\" at port \"" + port + "\".");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Set request
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync SnmpRequest request = session.snmpSetRequest(null, list);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Check for a timeout of the request
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync boolean completed = request.waitForCompletion((maxRetries + 1) * timeOut);
78a072e1b56619e3230735ae073668311232ec94vboxsync if (completed == false) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "setRequest() of SNMPSet: Request timed out, " +
78a072e1b56619e3230735ae073668311232ec94vboxsync "check reachability of agent.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Print request
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "setRequest() of SNMPSet: Request= " +
78a072e1b56619e3230735ae073668311232ec94vboxsync request.toString() + ".");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (rc == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Finish SNMP V" +
78a072e1b56619e3230735ae073668311232ec94vboxsync version + " GET request.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Now we have a response. Check if the response contains an error
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync String errorStatus = SnmpRequest.snmpErrorToString(
78a072e1b56619e3230735ae073668311232ec94vboxsync request.getErrorStatus());
78a072e1b56619e3230735ae073668311232ec94vboxsync if (errorStatus.compareTo("noError") != 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Error status= " +
78a072e1b56619e3230735ae073668311232ec94vboxsync errorStatus + ".");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Error index= " +
78a072e1b56619e3230735ae073668311232ec94vboxsync request.getErrorIndex() + ".");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (errorStatus.compareTo(connectStatus) == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Get request failed as " +
78a072e1b56619e3230735ae073668311232ec94vboxsync "expected with " + connectStatus + " status.");
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Get request should " +
78a072e1b56619e3230735ae073668311232ec94vboxsync "fail with " + connectStatus + " status.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Now we shall display the content of the result
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync SnmpVarBindList resp = request.getResponseVarBindList();
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("getRequest() of SNMPGet: Result=");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync for (int i = 0; i < resp.getVarBindCount(); i++) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(resp.getVarBindAt(i));
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (connectStatus.compareTo("noError") != 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Request should failed
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Get request should " +
78a072e1b56619e3230735ae073668311232ec94vboxsync "fail with " + connectStatus + " status.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync if (validOIDs) {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Check that we obtain correct values for the OIDs
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync if (resp.checkForValidValues()) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Returned values for" +
78a072e1b56619e3230735ae073668311232ec94vboxsync " OIDs are correct.");
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Returned values for" +
78a072e1b56619e3230735ae073668311232ec94vboxsync " OIDs are not correct.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync // Check that we obtain incorrect values for the OIDs
78a072e1b56619e3230735ae073668311232ec94vboxsync //
78a072e1b56619e3230735ae073668311232ec94vboxsync if (resp.checkForValidValues()) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Returned values for" +
78a072e1b56619e3230735ae073668311232ec94vboxsync " OIDs should not be correct.");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "getRequest() of SNMPGet: Returned values for" +
78a072e1b56619e3230735ae073668311232ec94vboxsync " OIDs are not correct as expected.");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync } catch (Exception e) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println(
78a072e1b56619e3230735ae073668311232ec94vboxsync "setRequest() of SNMPSet catched an unexpected exception: " +
78a072e1b56619e3230735ae073668311232ec94vboxsync e.getMessage() + "\"");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = 1;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (rc == 0) {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("setRequest() of SNMPSet succeeded");
78a072e1b56619e3230735ae073668311232ec94vboxsync } else {
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("setRequest() of SNMPSet failed");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync return rc;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /**
78a072e1b56619e3230735ae073668311232ec94vboxsync * Close SNMP connection with SNMP agent.
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync public void disconnect() {
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Stop and destroy the SnmpSession if still there
78a072e1b56619e3230735ae073668311232ec94vboxsync try {
78a072e1b56619e3230735ae073668311232ec94vboxsync session.destroySession();
78a072e1b56619e3230735ae073668311232ec94vboxsync session = null;
78a072e1b56619e3230735ae073668311232ec94vboxsync } catch (Exception e) {
78a072e1b56619e3230735ae073668311232ec94vboxsync // possible session already ended
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync System.out.println("disconnect() of SNMPSet succeeded");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /**
78a072e1b56619e3230735ae073668311232ec94vboxsync * Main.
78a072e1b56619e3230735ae073668311232ec94vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * @param args arguments
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync public static void main(String[] args) {
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync SNMPSet client = new SNMPSet();
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync int rc = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync // Retrieve parameters
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync rc = client.init(args);
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync // If init() succeeded then open connection
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync if (rc == 0) {
b9efdf4f2f5a547f76dc2e254656d83cab80ce73vboxsync rc = client.connect();
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync }
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync // If connect() succeeded then perform set request
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync if (rc == 0 && connectStatus.compareTo("SnmpStatusException") != 0) {
67927207a2d6bb545eb655ef14cdb090b1957120vboxsync rc = client.setRequest();
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync }
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync // Close connection
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync client.disconnect();
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync System.exit(rc);
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync }
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync // Arguments
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync int version = 0;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync String remoteHost = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync int port = 0;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync String oids = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync String community = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync String user = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync int securityLevel = SnmpDefinitions.authNoPriv;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync String securityFile = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync static String connectStatus = null;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync boolean validOIDs = true;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync // SnmpSession
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync SnmpSession session = null;
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync int timeOut = 30000; // default value
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync int maxRetries = 1;
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync}