⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isppagent.java

📁 一个SNMP4J开发的agent端程序
💻 JAVA
字号:
package com.poson.nmi.agent;

import java.io.*;

import org.apache.log4j.*;
import org.snmp4j.*;
import org.snmp4j.agent.*;
import org.snmp4j.agent.mo.*;
import org.snmp4j.agent.mo.snmp.*;
import org.snmp4j.mp.*;
import org.snmp4j.security.*;
import org.snmp4j.smi.*;
import org.snmp4j.transport.*;
import org.snmp4j.agent.io.ImportModes;
import org.snmp4j.util.ThreadPool;
import org.snmp4j.log.Log4jLogFactory;
import org.snmp4j.log.LogFactory;
import org.snmp4j.agent.mo.snmp4j.example.Snmp4jHeartbeatMib;
import org.snmp4j.agent.security.MutableVACM;
import org.snmp4j.agent.mo.ext.AgentppSimulationMib;


public class ISPPAgent extends BaseAgent {

// initialize Log4J logging
static {
  LogFactory.setLogFactory(new Log4jLogFactory());
}

protected String address;

private ISPPMib isppMib ;

public ISPPAgent(File bootCounterFile, File configFile) throws IOException {
	  super(bootCounterFile, configFile,
	        new CommandProcessor(new OctetString(MPv3.createLocalEngineID())));
	  agent.setThreadPool(ThreadPool.create("RequestPool", 4));
	}

	protected void registerManagedObjects() {
	  try {
	    // iSPP测试用
	    isppMib.registerMOs(server, null) ;
	  }
	  catch (DuplicateRegistrationException ex) {
	    ex.printStackTrace();
	  }
	}

	protected void addNotificationTargets(SnmpTargetMIB targetMIB,
	                                      SnmpNotificationMIB notificationMIB) {
	  targetMIB.addDefaultTDomains();
	
	  targetMIB.addTargetAddress(new OctetString("notification"),
	                             TransportDomains.transportDomainUdpIpv4,
	                             new OctetString(new UdpAddress("127.0.0.1/162").getValue()),
	                             200, 1,
	                             new OctetString("notify"),
	                             new OctetString("v2c"),
	                             StorageType.permanent);
	  targetMIB.addTargetParams(new OctetString("v2c"),
	                            MessageProcessingModel.MPv3,
	                            SecurityModel.SECURITY_MODEL_USM,
	                            new OctetString("SHADES"),
	                            SecurityLevel.AUTH_PRIV,
	                            StorageType.permanent);
	  notificationMIB.addNotifyEntry(new OctetString("default"),
	                                 new OctetString("notify"),
	                                 SnmpNotificationMIB.SnmpNotifyTypeEnum.inform,
	                                 StorageType.permanent);
	}

	protected void addViews(VacmMIB vacm) {
	  vacm.addGroup(SecurityModel.SECURITY_MODEL_SNMPv1,
	                new OctetString("cpublic"),
	                new OctetString("v1v2group"),
	                StorageType.nonVolatile);
	  vacm.addGroup(SecurityModel.SECURITY_MODEL_SNMPv2c,
	                new OctetString("cpublic"),
	                new OctetString("v1v2group"),
	                StorageType.nonVolatile);
	  vacm.addGroup(SecurityModel.SECURITY_MODEL_USM,
	                new OctetString("SHADES"),
	                new OctetString("v3group"),
	                StorageType.nonVolatile);
	  vacm.addGroup(SecurityModel.SECURITY_MODEL_USM,
	                new OctetString("TEST"),
	                new OctetString("v3test"),
	                StorageType.nonVolatile);
	  vacm.addGroup(SecurityModel.SECURITY_MODEL_USM,
	                new OctetString("SHA"),
	                new OctetString("v3restricted"),
	                StorageType.nonVolatile);
	
	  vacm.addAccess(new OctetString("v1v2group"), new OctetString("public"),
	                 SecurityModel.SECURITY_MODEL_ANY,
	                 SecurityLevel.NOAUTH_NOPRIV,
	                 MutableVACM.VACM_MATCH_EXACT,
	                 new OctetString("fullReadView"),
	                 new OctetString("fullWriteView"),
	                 new OctetString("fullNotifyView"),
	                 StorageType.nonVolatile);
	  vacm.addAccess(new OctetString("v3group"), new OctetString(),
	                 SecurityModel.SECURITY_MODEL_USM,
	                 SecurityLevel.AUTH_PRIV,
	                 MutableVACM.VACM_MATCH_EXACT,
	                 new OctetString("fullReadView"),
	                 new OctetString("fullWriteView"),
	                 new OctetString("fullNotifyView"),
	                 StorageType.nonVolatile);
	  vacm.addAccess(new OctetString("v3restricted"), new OctetString(),
	                 SecurityModel.SECURITY_MODEL_USM,
	                 SecurityLevel.AUTH_NOPRIV,
	                 MutableVACM.VACM_MATCH_EXACT,
	                 new OctetString("restrictedReadView"),
	                 new OctetString("restrictedWriteView"),
	                 new OctetString("restrictedNotifyView"),
	                 StorageType.nonVolatile);
	  vacm.addAccess(new OctetString("v3test"), new OctetString(),
	                 SecurityModel.SECURITY_MODEL_USM,
	                 SecurityLevel.AUTH_PRIV,
	                 MutableVACM.VACM_MATCH_EXACT,
	                 new OctetString("testReadView"),
	                 new OctetString("testWriteView"),
	                 new OctetString("testNotifyView"),
	                 StorageType.nonVolatile);
	
	  vacm.addViewTreeFamily(new OctetString("fullReadView"), new OID("1.3"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("fullWriteView"), new OID("1.3"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("fullNotifyView"), new OID("1.3"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	
	  vacm.addViewTreeFamily(new OctetString("restrictedReadView"),
	                         new OID("1.3.6.1.2"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("restrictedWriteView"),
	                         new OID("1.3.6.1.2.1"),
	                         new OctetString(),
	                         VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("restrictedNotifyView"),
	                         new OID("1.3.6.1.2"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	
	  vacm.addViewTreeFamily(new OctetString("testReadView"),
	                         new OID("1.3.6.1.2"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("testReadView"),
	                         new OID("1.3.6.1.2.1.1"),
	                         new OctetString(), VacmMIB.vacmViewExcluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("testWriteView"),
	                         new OID("1.3.6.1.2.1"),
	                         new OctetString(),
	                         VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	  vacm.addViewTreeFamily(new OctetString("testNotifyView"),
	                         new OID("1.3.6.1.2"),
	                         new OctetString(), VacmMIB.vacmViewIncluded,
	                         StorageType.nonVolatile);
	
	}

	protected void addUsmUser(USM usm) {
	  UsmUser user = new UsmUser(new OctetString("SHADES"),
	                             AuthSHA.ID,
	                             new OctetString("SHADESAuthPassword"),
	                             PrivDES.ID,
	                             new OctetString("SHADESPrivPassword"));
	//  usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user);
	  usm.addUser(user.getSecurityName(), null, user);
	  user = new UsmUser(new OctetString("TEST"),
	                             AuthSHA.ID,
	                             new OctetString("maplesyrup"),
	                             PrivDES.ID,
	                             new OctetString("maplesyrup"));
	  usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user);
	  user = new UsmUser(new OctetString("SHA"),
	                             AuthSHA.ID,
	                             new OctetString("SHAAuthPassword"),
	                             null,
	                             null);
	  usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user);
	}


	protected void initTransportMappings() throws IOException {
	  transportMappings = new TransportMapping[1];
	  Address addr = GenericAddress.parse(address);
	  TransportMapping tm =
	      TransportMappings.getInstance().createTransportMapping(addr);
	  transportMappings[0] = tm;
	}

	public static void main(String[] args) {
		  String address;
		  if (args.length > 0) {
		    address = args[0];
		  }
		  else {
		    address = "0.0.0.0/163";   //
		  }
		  BasicConfigurator.configure();
		  try {
			ISPPAgent isppAgent = new ISPPAgent(new File("SNMP4JTestAgentBC.cfg"),
		                                         new File("SNMP4JTestAgentConfig.cfg"));
		    isppAgent.address = address;
		    isppAgent.init();
		    isppAgent.loadConfig(ImportModes.REPLACE_CREATE);
		    isppAgent.addShutdownHook();
		    isppAgent.getServer().addContext(new OctetString("public"));
		    isppAgent.finishInit();
		    isppAgent.run();
		    isppAgent.sendColdStartNotification();
		    while (true) {
		      try {
		        Thread.sleep(1000);
		      }
		      catch (InterruptedException ex1) {
		        break;
		      }
		    }
		  }
		  catch (IOException ex) {
		    ex.printStackTrace();
		  }
		
	}

	protected void unregisterManagedObjects() {
	  // here we should unregister those objects previously registered...
	}

	protected void addCommunities(SnmpCommunityMIB communityMIB) {
	  Variable[] com2sec = new Variable[] {
	      new OctetString("public"),              // community name
	      new OctetString("cpublic"),              // security name
	      getAgent().getContextEngineID(),        // local engine ID
	      new OctetString("public"),              // default context name
	      new OctetString(),                      // transport tag
	      new Integer32(StorageType.nonVolatile), // storage type
	      new Integer32(RowStatus.active)         // row status
	  };
	  MOTableRow row =
	      communityMIB.getSnmpCommunityEntry().createRow(
	        new OctetString("public2public").toSubIndex(true), com2sec);
	  communityMIB.getSnmpCommunityEntry().addRow(row);
	//  snmpCommunityMIB.setSourceAddressFiltering(true);
	}

	protected void registerSnmpMIBs() {
	  
		
	  isppMib = new ISPPMib() ;
	  super.registerSnmpMIBs();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -