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

📄 walk.java

📁 很不错java的SNMP应用例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	    Address targetAddress = GenericAddress.parse("udp:"+ip+"/"+puerto);
	    TransportMapping transport = new DefaultUdpTransportMapping();
	   	Snmp snmp = new Snmp(transport);
	   	USM usm = new USM(SecurityProtocols.getInstance(),new OctetString(MPv3.createLocalEngineID()), 0);
	   	SecurityModels.getInstance().addSecurityModel(usm);
	   	transport.listen();
	   		
	   	// a馻dir el usuario al USM
	   	//snmp.getUSM().addUser(new OctetString("default"),new UsmUser(new OctetString("default"),AuthMD5.ID,new OctetString("12345678"),PrivDES.ID,new OctetString("MD5DESUserPrivPassword")));
	   	//snmp.getUSM().addUser(new OctetString("seminario"),new UsmUser(new OctetString("seminario"),AuthMD5.ID,new OctetString("12345678"),PrivDES.ID,new OctetString("12345678")));
	   	//snmp.getUSM().addUser(new OctetString("seminario"),new UsmUser(new OctetString("seminario"),AuthMD5.ID,new OctetString("12345678"),null,null));
	   	if (claveEncriptacion==null){
	   	  snmp.getUSM().addUser(new OctetString(nombreUsuario),new UsmUser(new OctetString(nombreUsuario),metAut,new OctetString(claveAutenticacion),null,null));	
	   	}else{
	   	  snmp.getUSM().addUser(new OctetString(nombreUsuario),new UsmUser(new OctetString(nombreUsuario),metAut,new OctetString(claveAutenticacion),metPriv,new OctetString(claveEncriptacion)));
	   	}
	   	
	   	// establecer los parametros
		UserTarget target = new UserTarget();
		target.setAddress(targetAddress);
		target.setRetries(intentos);
		target.setTimeout(tiempoEspera);
		target.setVersion(SnmpConstants.version3);
		target.setSecurityLevel(SecurityLevel);
		//target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
		target.setSecurityName(new OctetString(nombreUsuario));
		
		// creando la PDU
		PDU pdu = new ScopedPDU();
		pdu.add(new VariableBinding(new OID(requerimiento)));
	    pdu.setType(PDU.GETNEXT);
	    		
		 // Para enviar y procesar el pdu para hacer el walk
	    OID rootOID = pdu.get(0).getOid();
		PDU response = null;
		int objects = 0;
		int requests = 0;
		long startTime = System.currentTimeMillis();

		if (limite==0){
			do {
				requests++;
				ResponseEvent responseEvent = snmp.send(pdu, target);
				response = responseEvent.getResponse();
				if (response != null) {
					objects += response.size();
				}
				//Aqui se haria el setText(walkRealizado);
				//System.out.println("Walking MIB Tree - "+requests);
			}
			while (!procesarWalk(response, pdu, rootOID));
		}else{
			do {
				requests++;
				ResponseEvent responseEvent = snmp.send(pdu, target);
				response = responseEvent.getResponse();
				if (response != null) {
					objects += response.size();
				}
				//Aqui se haria el setText(walkRealizado);
				//System.out.println("Walking MIB Tree - "+requests);
			}
			while ((!procesarWalk(response, pdu, rootOID))&&(requests<limite));
		}
		if(walkRealizado.equals("")){
		  //System.out.println("respuesta vacia");	
		  walkRealizado = walkRealizado.concat(erroresGenerales07);
		}
		//System.out.println();
		walkRealizado = walkRealizado.concat("\n");
		//System.out.println("Total requests sent:    "+requests);
		walkRealizado = walkRealizado.concat(erroresGenerales17+requests+"\n");
		//System.out.println("Total objects received: "+objects);
		walkRealizado = walkRealizado.concat(erroresGenerales18+objects+"\n");
		//System.out.println("Total walk time:        "+(System.currentTimeMillis()-startTime)+" milliseconds");	    
		walkRealizado = walkRealizado.concat(erroresGenerales19+(System.currentTimeMillis()-startTime)+erroresGenerales20+"\n");
	    
	  }catch (Exception e){e.printStackTrace();}
   }

  private boolean procesarWalk(PDU response, PDU request, OID rootOID) {
  		//System.out.println("Error 0 - "+response);
		if ((response == null) || (response.getErrorStatus() != 0)|| (response.getType() == PDU.REPORT)){
			
			//System.out.println("dato: "+dato.indexOf("1.3.6.1.6.3.15.1.1.3.0"));
		    if (String.valueOf(response).indexOf("1.3.6.1.6.3.15.1.1.3.0")>=0){
		   	  //walkRealizado = walkRealizado.concat("Error: El usuario no se encuentra en el Agente...\n");
		   	  walkRealizado = walkRealizado.concat(erroresGenerales08);
		    }else{
		      if (String.valueOf(response).indexOf("1.3.6.1.6.3.15.1.1.5.0")>=0){
			   	 //walkRealizado = walkRealizado.concat("Error: La clave y/o el algoritmo de autenticaci髇 proporcionados son incorrectos...\n");
			   	 walkRealizado = walkRealizado.concat(erroresGenerales09);
			  }else{
			    if (String.valueOf(response).indexOf("1.3.6.1.6.3.15.1.1.6.0")>=0){
			   	  //walkRealizado = walkRealizado.concat("Error: La clave y/o el algoritmo de encriptaci髇 proporcionados son incorrectos...\n");
			   	  walkRealizado = walkRealizado.concat(erroresGenerales10);
			    }else{
		      	  //System.out.println("Error: Tiempo de espera excedido...\nError 1 - "+response);
				  //walkRealizado = walkRealizado.concat("Error: Tiempo de espera excedido...\n");
				  walkRealizado = walkRealizado.concat(erroresGenerales11);
			    }
		      }	
		    }
		    
			return true;
		}
		boolean finished = false;
		OID lastOID = request.get(0).getOid();
		for (int i=0; (!finished) && (i<response.size()); i++) {
			VariableBinding vb = response.get(i);
			if ((vb.getOid() == null) || (vb.getOid().size() < rootOID.size())|| (rootOID.leftMostCompare(rootOID.size(), vb.getOid()) != 0)) {
				//System.out.println("Error 2 - "+vb.getOid());
				//System.out.println("Error 2 - "+vb.getOid().size());
				//System.out.println("Error 2 - "+rootOID);
				//System.out.println("Error 2 - "+rootOID.size());
				//System.out.println("Error 2 - "+rootOID.leftMostCompare(rootOID.size(), vb.getOid()));
				//System.out.println("Error 2 - "+response);
				if ((rootOID.leftMostCompare(rootOID.size(), vb.getOid()))>0){
				  //System.out.println("Error: El OID especificado es mayor que el mayor OID de la MIB consultada...\nError 2 - "+response);
				  walkRealizado = walkRealizado.concat(erroresGenerales12);
				}
				finished = true;
			} else {
			  if (Null.isExceptionSyntax(vb.getVariable().getSyntax())) {
				walkRealizado = walkRealizado.concat(vb.toString()+"\n");
				//System.out.println(vb.toString());
				//System.out.println("Error 3 - "+response);
				finished = true;
			  }else{
				if (vb.getOid().compareTo(lastOID) <= 0) {
				  //System.out.println("La variable recibida no es sucesora de la requerida:");
				  //System.out.println(vb.toString() + " <= "+lastOID);
				  walkRealizado = walkRealizado.concat(erroresGenerales13);
				  walkRealizado = walkRealizado.concat(vb.toString() + " <= "+lastOID+"\n");
				  //System.out.println("Error 4 - "+response);
				  finished = true;
				  
			    }else{
				  //Aqui se imprime el mensaje ppal
				  //System.out.println("request: "+request);
				  //System.out.println("response: "+response);
				  //System.out.println(vb.toString());
				  walkRealizado = walkRealizado.concat(vb.toString()+"\n");
				  lastOID = vb.getOid();
				  
				  //MibValueSymbol  symbolTemp = mib.getSymbolByOid("1.3.6.1.2.1.3.1.1.3");
	      		  //System.out.println("datos de ahora: "+symbolTemp);
	      		  //System.out.println("valor de getName: "+(MibTreeBuilder.getInstance().getNode(symbolTemp)).getName());
				  
			    }
			  }
			}
		}
		if (response.size() == 0) {
			//System.out.println("Error 5 - "+response);
			finished = true;
		}
		if (!finished) {
			//System.out.println("Error 6 - "+response);
			VariableBinding next = response.get(response.size()-1);
			next.setVariable(new Null());
			request.set(0, next);
			request.setRequestID(new Integer32(0));
		}
		return finished;
  }
	
  public int[] pasarOID(String OID){
	  	int digitos=0;
		StringTokenizer Token = new StringTokenizer (OID,".");
		while(Token.hasMoreTokens()){
		  Token.nextToken();
		  digitos++;	
		}
	  	int tama駉=digitos;
	  	int requerimiento[] = new int[tama駉];
		int i=0;
		StringTokenizer Token1 = new StringTokenizer (OID,".");
		while(Token1.hasMoreTokens()){
		  requerimiento[i]=Integer.parseInt(Token1.nextToken());
		  i++;
		}
		return requerimiento;
  }
	
  public static void main(String[] args){
  	  	
		//walk p = new walk();
		//int requerimiento[] = p.pasarOID(".1.3.6.1.2.1");
		//String ip = "192.168.0.5";
		//String puerto = "161";
		//String comunidad = "public";
		//int intentos = 3;
		//int tiempoEspera = 1500;
		//long limite = 0;
		
		//requerimiento = p.pasarOID(".1.3.6.1.2.1.1");
		//requerimiento = p.pasarOID(".1.3.6.1.2.1.4.22");
		//requerimiento = p.pasarOID("111");
		//requerimiento = p.pasarOID(".1.3.6.1.2.1.4.22");
		
		
		//p.walkSNMPv1(ip,puerto,comunidad,intentos,tiempoEspera,requerimiento,100);
		//p.walkSNMPv1(ip,puerto,comunidad,intentos,tiempoEspera,requerimiento,limite);
		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO: -SNMPv1-\n\n\n"+p.getWalkRealizado());
		//p.limpiarWalkRealizado();
		
		//p.walkSNMPv2c(ip, puerto, comunidad, intentos, tiempoEspera,requerimiento,10);
		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO: -SNMPv2c-\n\n\n"+p.getWalkRealizado());
		//p.walkSNMPv2c(ip, puerto, comunidad, intentos, tiempoEspera,requerimiento,limite);
		//p.limpiarWalkRealizado();
		
		//String nombreUsuario = "seminario";
		//String claveAutenticacion = "12345678";
		//String claveEncriptacion = "12345678";
				
		//p.walkSNMPv3(ip,puerto,nombreUsuario,claveAutenticacion,claveEncriptacion,SecurityLevel.AUTH_PRIV,intentos,tiempoEspera,requerimiento,limite,AuthMD5.ID,PrivDES.ID);
		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO: -SNMPv3-\n\n\n"+p.getWalkRealizado());
		//p.limpiarWalkRealizado();
		//p.walkSNMPv3(ip,puerto,nombreUsuario,claveAutenticacion,claveEncriptacion,SecurityLevel.AUTH_NOPRIV,intentos,tiempoEspera,requerimiento,limite);
		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO\n\n\n"+p.getWalkRealizado());
		//p.walkSNMPv3(ip,puerto,nombreUsuario,claveAutenticacion,claveEncriptacion,SecurityLevel.AUTH_PRIV,intentos,tiempoEspera,requerimiento,10);
		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO: -SNMPv3 / encriptado-\n\n\n"+p.getWalkRealizado());
		//p.walkSNMPv3(ip,puerto,nombreUsuario,claveAutenticacion,claveEncriptacion,SecurityLevel.AUTH_PRIV,intentos,tiempoEspera,requerimiento,limite);
		//p.limpiarWalkRealizado();

		//System.out.println("\n\n\nIMPRESION DE LA VARIABLE WALK REALIZADO\n\n\n"+p.getWalkRealizado());
  }
}

⌨️ 快捷键说明

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