一 安装

window snmp服务开启及测试

二 开启服务

window snmp服务开启及测试

三 测试

    3.1  MIB 浏览器测试

      iReasoning MIB Browser下载地址:http://ireasoning.com/download.shtml

 window snmp服务开启及测试

    3.2  程序测试

 

<dependency>
   <groupId>org.snmp4j</groupId>
   <artifactId>snmp4j</artifactId>
   <version>1.11.2</version>
</dependency>
package com;

import java.io.IOException;
import java.util.Vector;

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.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class Snmp4jGet {
    private Snmp snmp = null;
    private Address targetAddress = null;

    public static void main(String[] args) {
        try {
            Snmp4jGet util = new Snmp4jGet();
            util.initComm();
            util.getPDU();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 初始化
     */
    public void initComm() throws IOException {
        // 地址是本机 端口一般都是161
        targetAddress = GenericAddress.parse("udp:127.0.0.1/161");
        TransportMapping transport = new DefaultUdpTransportMapping();
        snmp = new Snmp(transport);
        transport.listen();
    }

    /**
     * 执行发送
     */
    public void getPDU() throws IOException {
        // PDU 对象
        PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.5.0")));
        // 操作类型
        pdu.setType(PDU.GET);
        ResponseEvent revent = sendPDU(pdu);
        if(null != revent){
            readResponse(revent);
        }
    }

    /**
     * 发送一个PDU
     */
    public ResponseEvent sendPDU(PDU pdu) throws IOException {
        // 设置 目标
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString("public"));
        target.setAddress(targetAddress);
        // 通信不成功时的重试次数 N+1次
        target.setRetries(2);
        // 超时时间
        target.setTimeout(2 * 1000);
        // SNMP 版本
        target.setVersion(SnmpConstants.version2c);
        // 向Agent发送PDU,并返回Response
        return snmp.send(pdu, target);
    }

    /**
     * 解析返回的值
     */
    @SuppressWarnings("unchecked")
    public void readResponse(ResponseEvent respEvnt) {
        // 解析Response
        System.out.println("------------>解析Response<-------------");
        if (respEvnt != null && respEvnt.getResponse() != null) {
            Vector<VariableBinding> recVBs = respEvnt.getResponse()
                    .getVariableBindings();
            for (int i = 0; i < recVBs.size(); i++) {
                VariableBinding recVB = recVBs.elementAt(i);
                System.out.println(recVB.getOid() + " : "
                        + recVB.getVariable().toString());
            }
        }
    }
}

相关文章:

  • 2021-11-24
  • 2022-01-24
  • 2021-05-26
  • 2021-07-19
  • 2021-04-11
  • 2021-08-26
  • 2022-12-23
猜你喜欢
  • 2021-05-14
  • 2021-10-26
  • 2021-09-21
  • 2021-05-15
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
相关资源
相似解决方案