zoukankan      html  css  js  c++  java
  • snmp4j 编程

    从www.snmp4j.org下载snmp4j的jar包,用eclipse新建一个java项目。将jar包导入工程(只有一个jar包),开始编程

    一个简单的测试程序

    //create target

    //create pdu

    //snmp.send

    okay,上代码

    package com.gxf.snmp;
    
    import java.io.IOException;
    
    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.Address;
    import org.snmp4j.smi.GenericAddress;
    import org.snmp4j.smi.OID;
    import org.snmp4j.smi.OctetString;
    import org.snmp4j.smi.Variable;
    import org.snmp4j.smi.VariableBinding;
    import org.snmp4j.transport.DefaultUdpTransportMapping;
    
    //create target
    //create pdu
    //snmp send
    
    public class SNMP {
    
        public static void main(String[] args) {
            //create target
            Address address = GenericAddress.parse("udp:210.38.235.186/161");
            CommunityTarget target = new CommunityTarget();
            
            target.setCommunity(new OctetString("public"));
            target.setAddress(address);
            target.setTimeout(10000);//10s
            target.setVersion(SnmpConstants.version2c);
            //create pdu
            PDU pduSet = createSetPdu();
            PDU pudGet = createGetPdu();
            
            sendPdu(pudGet, target);
            sendPdu(pduSet, target);
            sendPdu(pudGet, target);
            
            
        }
        //1.3.6.1.2.1.1.5.0 sysName
        //create set pdu 
        public static  PDU createSetPdu(){
            PDU pduReturn = new PDU();
            
            pduReturn.setType(PDU.SET);
            VariableBinding variable = new VariableBinding(new OID("1.3.6.1.2.1.1.5.0"), new OctetString("testname"));
            pduReturn.add(variable);
            
            return pduReturn;
        }
        //create get pdu
        public static PDU createGetPdu(){
            PDU pduReturn = new PDU();
            
            pduReturn.setType(PDU.GET);
            VariableBinding variableBinding = new VariableBinding(new OID("1.3.6.1.2.1.1.5.0"));
            pduReturn.add(variableBinding);
            
            return pduReturn;        
        }
        //send pdu
        public static void sendPdu(PDU pdu, CommunityTarget communityTarget){
            try {
                TransportMapping transportMapping = new DefaultUdpTransportMapping();
                transportMapping.listen();
                Snmp snmp = new Snmp(transportMapping);
                
                ResponseEvent responseEvent = snmp.send(pdu, communityTarget);
                //get reponse pdu
                if(null != responseEvent){
                    PDU pduResponse = responseEvent.getResponse();
                    System.out.println("size : " + pduResponse.size());
                    for(int i = 0; i < pduResponse.size(); i++){
                        VariableBinding variableBinding = pduResponse.get(i);
                        Variable variable = variableBinding.getVariable();
                        System.out.println(variable.toString());
                    }
                    System.out.println("error:" + pduResponse.getErrorStatusText());
                }
                else{
                    System.out.println("timeout ...");
                }
            } catch (IOException e) {
                
                e.printStackTrace();
                System.out.println(e.getMessage());
            }
            
        }
    }
  • 相关阅读:
    获取网站IP地址(Linux,C)
    linux_c_udp_example
    linux_c_tcp_example
    golang-sort
    docker_jenkins
    依赖抽象,而不要依赖具体实现
    网络杂记
    游戏开发中遇到的问题
    随手杂记
    go多态
  • 原文地址:https://www.cnblogs.com/luckygxf/p/3895909.html
Copyright © 2011-2022 走看看