Blame view

src/com/sitech/ismp/snmp/SnmpUtilSendTrap.java 5.71 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
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();
        }
    }   
  
}