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

📄 enviartrapinform.java

📁 很不错java的SNMP应用例子
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 *		Status: Listo
 */
 package versiones.TrapInform; 

import java.io.*;
import java.util.*;
 
import org.snmp4j.*;
import org.snmp4j.event.*;
import org.snmp4j.log.*;
import org.snmp4j.mp.*;
import org.snmp4j.security.*;
import org.snmp4j.smi.*;
import org.snmp4j.asn1.*;
import org.snmp4j.test.*;
import org.snmp4j.tools.console.*;
import org.snmp4j.transport.*;
import org.snmp4j.util.*;

public class enviarTrapInform{
  
  private Snmp snmp = null;
  private static boolean respondio;
  private static String dato;  	  


  public String trapv1(String ip, String puerto, String comunidad, int intentos, int tiempoEspera, String requerimiento,String vbsOID,int tipoTrapv1,int especificTrap){
    String respuesta = "";
    
   try{
      	Address targetAddress = GenericAddress.parse("udp:"+ip+"/"+puerto);
	   	TransportMapping transport = new DefaultUdpTransportMapping();
		Snmp snmp = new Snmp(transport);
	
		CommandResponder trapPrinter = new CommandResponder() {
		  public synchronized void processPdu(CommandResponderEvent e) {
		    PDU command = e.getPDU();
		    if (command != null) {
		      System.out.println(command.toString());
		    }
		  }
		};
		snmp.addCommandResponder(trapPrinter);
		transport.listen();
	
	    CommunityTarget target = new CommunityTarget();
	    target.setCommunity(new OctetString(comunidad));
	    target.setAddress(targetAddress);
	    target.setRetries(intentos);
	    target.setTimeout(tiempoEspera);
	    target.setVersion(SnmpConstants.version1);
	    // creando el PDU
	    PDUv1 pdu = new PDUv1();
	    pdu.setType(PDU.V1TRAP);
		pdu.setGenericTrap(tipoTrapv1);
		if (tipoTrapv1==PDUv1.ENTERPRISE_SPECIFIC){
			pdu.setSpecificTrap(especificTrap);			
		}
		
		pdu.setTimestamp(20000);
		
		Vector vbs = new Vector();
	    vbs = getVariableBinding(requerimiento);
		pdu.setEnterprise(new OID(vbsOID));
		
		
		
		
    
	    // enviando el PDU
	    respondio=true;
	    dato="";
	    ResponseListener listener = new ResponseListener() {
	    public void onResponse(ResponseEvent event) {
	        PDU response = event.getResponse();
	        PDU request = event.getRequest();
	        if (response == null) {
	            //System.out.println("Request "+request+" timed out");
	            dato="Tiempo de espera excedido...";
	        }
	        else {
	            //System.out.println("Received response "+response+" on request "+request);
	            dato=String.valueOf(response);
	            //Tratamiento de la respuesta
	            //System.out.println("respuesta: "+dato);
	    	}
	    	respondio=false;
		}};
		snmp.sendPDU(pdu, target, null, listener);
		//snmp.trap(pdu,target);
		//System.out.println("envie el trapv1...");
	    snmp.close();
    
    }catch (Exception e){e.printStackTrace();}
        	
  	return respuesta;
  
  }

  private Vector getVariableBinding(String varbind) {
		Vector v = new Vector(varbind.length());
		String oid = null;
		char type = 'i';
		String value = null;
		int equal = varbind.indexOf("={");
		if (equal > 0) {
			oid = varbind.substring(0, equal);
			type = varbind.charAt(equal+2);
			value = varbind.substring(varbind.indexOf('}')+1);
		}else{
			v.add(new VariableBinding(new OID(varbind)));
			return v;
		}

		VariableBinding vb = new VariableBinding(new OID(oid));
		if (value != null) {
			Variable variable;
			switch (type) {
				case 'i':
					variable = new Integer32(Integer.parseInt(value));
					break;
				case 'u':
					variable = new UnsignedInteger32(Long.parseLong(value));
					break;
				case 's':
					variable = new OctetString(value);
					break;
				case 'x':
					variable = OctetString.fromString(value, ':', 16);
					break;
				case 'd':
					variable = OctetString.fromString(value, '.', 10);
					break;
				case 'b':
					variable = OctetString.fromString(value, ' ', 2);
					break;
				case 'n':
					variable = new Null();
					break;
				case 'o':
					variable = new OID(value);
					break;
				case 't':
					variable = new TimeTicks(Long.parseLong(value));
					break;
				case 'a':
					variable = new IpAddress(value);
					break;
				default:
					throw new IllegalArgumentException("Variable type "+type+" not supported");
			}
			vb.setVariable(variable);
		}
		v.add(vb);
		return v;
	  }
	  
  public String trapv2c(String ip, String puerto, String comunidad, int intentos, int tiempoEspera, String requerimiento,String vbsOID){
    String respuesta = "";
    
    try{
      	Address targetAddress = GenericAddress.parse("udp:"+ip+"/"+puerto);
	   	TransportMapping transport = new DefaultUdpTransportMapping();
		Snmp snmp = new Snmp(transport);
	
		CommandResponder trapPrinter = new CommandResponder() {
		  public synchronized void processPdu(CommandResponderEvent e) {
		    PDU command = e.getPDU();
		    if (command != null) {
		      System.out.println(command.toString());
		    }
		  }
		};
		snmp.addCommandResponder(trapPrinter);
		transport.listen();
	
	    CommunityTarget target = new CommunityTarget();
	    target.setCommunity(new OctetString(comunidad));
	    target.setAddress(targetAddress);
	    target.setRetries(intentos);
	    target.setTimeout(tiempoEspera);
	    target.setVersion(SnmpConstants.version2c);
	    // creando el PDU
	    PDU pdu = new PDU();
	    Vector vbs = new Vector();
	    if (
	    	(vbsOID.equals(String.valueOf(SnmpConstants.coldStart)))||
  			(vbsOID.equals(String.valueOf(SnmpConstants.warmStart)))||
  			(vbsOID.equals(String.valueOf(SnmpConstants.linkDown)))||
  			(vbsOID.equals(String.valueOf(SnmpConstants.linkUp)))||
  			(vbsOID.equals(String.valueOf(SnmpConstants.authenticationFailure)))
  		   ){
	    	if ((vbs.size() == 0) ||((vbs.size() > 1) &&(!((VariableBinding) vbs.get(0)).getOid().equals(SnmpConstants.sysUpTime)))) {
					vbs.add(0, new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(0)));
				}
			if ((vbs.size() == 1) || ((vbs.size() > 2) &&(!((VariableBinding) vbs.get(1)).getOid().equals(SnmpConstants.snmpTrapOID)))) {
					vbs.add(1, new VariableBinding(SnmpConstants.snmpTrapOID, new OID(vbsOID)));
				}
	    }else{
		    vbs = getVariableBinding(requerimiento);
		    if ((vbs.size() == 0) ||((vbs.size() > 1) &&(!((VariableBinding) vbs.get(0)).getOid().equals(SnmpConstants.sysUpTime)))) {
					vbs.add(0, new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(0)));
				}
			if ((vbs.size() == 1) || ((vbs.size() > 2) &&(!((VariableBinding) vbs.get(1)).getOid().equals(SnmpConstants.snmpTrapOID)))) {
					vbs.add(1, new VariableBinding(SnmpConstants.snmpTrapOID, new OID(vbsOID)));
				}
		}
		
		for (int i=0; i<vbs.size(); i++) {
			pdu.add((VariableBinding)vbs.get(i));
		}
	    pdu.setType(PDU.TRAP);
    
	    // enviando el PDU
	    respondio=true;
	    dato="";
	    ResponseListener listener = new ResponseListener() {
	    public void onResponse(ResponseEvent event) {
	        PDU response = event.getResponse();
	        PDU request = event.getRequest();
	        if (response == null) {
	            //System.out.println("Request "+request+" timed out");
	            dato="Tiempo de espera excedido...";
	        }
	        else {
	            System.out.println("Received response "+response+" on request "+request);
	            dato=String.valueOf(response);
	            //Tratamiento de la respuesta
	            System.out.println("respuesta: "+dato);
	    	}
	    	respondio=false;
		}};
		snmp.sendPDU(pdu, target, null, listener);
		//System.out.println("envie el trapv2c...");
	    snmp.close();
    
    }catch (Exception e){e.printStackTrace();}
        	
  	return respuesta;
  
  }
  
  public String informv2c(String ip, String puerto, String comunidad, int intentos, int tiempoEspera, String requerimiento,String vbsOID){
    String respuesta = "";
    
    try{
      	Address targetAddress = GenericAddress.parse("udp:"+ip+"/"+puerto);
	   	TransportMapping transport = new DefaultUdpTransportMapping();
		Snmp snmp = new Snmp(transport);
	
		CommandResponder trapPrinter = new CommandResponder() {
		  public synchronized void processPdu(CommandResponderEvent e) {
		    PDU command = e.getPDU();
		    if (command != null) {
		      System.out.println(command.toString());
		    }
		  }
		};
		snmp.addCommandResponder(trapPrinter);
		transport.listen();
	
	    CommunityTarget target = new CommunityTarget();
	    target.setCommunity(new OctetString(comunidad));
	    target.setAddress(targetAddress);
	    target.setRetries(intentos);
	    target.setTimeout(tiempoEspera);
	    target.setVersion(SnmpConstants.version2c);
	    // creando el PDU
	    PDU pdu = new PDU();
	    Vector vbs = new Vector();
	    vbs = getVariableBinding(requerimiento);
	    if ((vbs.size() == 0) ||((vbs.size() > 1) &&(!((VariableBinding) vbs.get(0)).getOid().equals(SnmpConstants.sysUpTime)))) {
				vbs.add(0, new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(0)));
			}
		if ((vbs.size() == 1) || ((vbs.size() > 2) &&(!((VariableBinding) vbs.get(1)).getOid().equals(SnmpConstants.snmpTrapOID)))) {
				vbs.add(1, new VariableBinding(SnmpConstants.snmpTrapOID, new OID(vbsOID)));
			}
		for (int i=0; i<vbs.size(); i++) {
			pdu.add((VariableBinding)vbs.get(i));
		}
	    pdu.setType(PDU.INFORM);
    
	    // enviando el PDU

⌨️ 快捷键说明

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