SnmpUtilSendTrap.java 5.71 KB
package com.sitech.ismp.snmp;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;

import java.io.IOException;
import java.util.ResourceBundle;
import java.util.Vector;
  
/**  
 * 本类用于向管理进程发送Trap信息  
 *   
 * @author
 *  
 */  
public class SnmpUtilSendTrap {   
  
    private Snmp snmp = null;
  
    private Address targetAddress = null;
  
    public void initComm() throws IOException {   
  
        // 设置管理进程的IP和端口   
        //targetAddress = GenericAddress.parse("udp:127.0.0.1/21162"); 
        //targetAddress = GenericAddress.parse("udp:10.110.16.203/21162");
        ResourceBundle snmpConfig = ResourceBundle.getBundle("snmp");
        // 在snmp.properties获得snmp配置参数
        String ip = snmpConfig.getString("ip");
        String strport = snmpConfig.getString("port");
        String snmppath = "udp:" + ip + "/" + strport;
        targetAddress = GenericAddress.parse(snmppath);
        
        TransportMapping transport = new DefaultUdpTransportMapping();
        snmp = new Snmp(transport);
        transport.listen();   
  
    }   
  
    /**  
     * 向管理进程发送Trap报文  
     *   
     * @throws java.io.IOException
     */  
    public void sendPDU() throws IOException {   
  
        // 设置 target   
        CommunityTarget target = new CommunityTarget();
        target.setAddress(targetAddress);   
  
        // 通信不成功时的重试次数   
        target.setRetries(2);   
        // 超时时间   
        target.setTimeout(1500);   
        // snmp版本   
        target.setVersion(SnmpConstants.version2c);
  
        // 创建 PDU   
        PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.0.6.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.1.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.2.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.3.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.4.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.5.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.6.0")));
        pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.42.2.95.1.3.7.0")));
        
        pdu.add(new VariableBinding(new OID("1.3.6.1.6.3.1.1.4.1.0"),
                new OctetString("1.3.6.1.4.1.2011.2.15.2.4.3.3.0.1")));
        System.out.println("pdu is:"+pdu);
        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.1.0"),
                new OctetString("6254001")));
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.2.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.3.0"),   
//                new OctetString("2009-04-29 13:41:29")));   
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.4.0"),   
//                new OctetString("C5505-2"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.5.0"),   
//                new OctetString("5")));   
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.6.0"),   
//                new OctetString("6000"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.7.0"),   
//                new OctetString("1337")));   
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.8.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.9.0"),   
//                new OctetString("506"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.10.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.11.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.12.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.13.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.14.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.15.0"),   
//                new OctetString("1"))); 
//        pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.2011.2.15.2.4.3.3.16.0"),   
//                new OctetString("你哦好"))); 
        		
        pdu.setType(PDU.TRAP);
  
        // 向Agent发送PDU,并接收Response   
        ResponseEvent respEvnt = snmp.send(pdu, target);
  
        // 解析Response   
        System.out.println(respEvnt==null);
        if (respEvnt != null && respEvnt.getResponse() != null) {   
            Vector recVBs = respEvnt.getResponse()   
            .getVariableBindings();   
            for (int i = 0; i < recVBs.size(); i++) {   
                VariableBinding recVB =(VariableBinding) recVBs.elementAt(i);
                System.out.println(recVB.getOid() + " : " + recVB.getVariable());   
            }   
        }   
    }   
  
    public static void main(String[] args) {   
    	System.out.println("print the main in the trap!");
        try {
            SnmpUtilSendTrap util = new SnmpUtilSendTrap();
            util.initComm();
            util.sendPDU();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }   
  
}