`
信仰在天空飘荡
  • 浏览: 12408 次
社区版块
存档分类
最新评论

SNMP4J实现SNMP GET\SET

    博客分类:
  • SNMP
阅读更多

SNMP GET就是获取SNMP服务上的某个节点的值(如可获取windows的内存、CPU等信息)

SNMP SET就是设置SNMP服务上某个节点的值

下面就写了个简单的GET\SET的例子

package com.eshore.snmpgetset;

import java.io.IOException;
import java.util.Date;
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.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

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


    public void initComm() throws IOException {  

             

           // 设置Agent方的IP和端口  

           targetAddress = GenericAddress.parse("udp:127.0.0.1/163");  

           TransportMapping transport = new DefaultUdpTransportMapping();  

           snmp = new Snmp(transport);  
           
           transport.listen();  
    }  


    public ResponseEvent sendPDU(PDU pdu) throws IOException {  

           // 设置 target  

           CommunityTarget target = new CommunityTarget();  

           target.setCommunity(new OctetString("public"));  

           target.setAddress(targetAddress);  

           // 通信不成功时的重试次数  

           target.setRetries(2);  

           // 超时时间  

           target.setTimeout(1500);  

           target.setVersion(SnmpConstants.version2c);  

           // 向Agent发送PDU,并返回Response  
           ResponseEvent event = snmp.send(pdu, target);
           
           //snmp.close();
           
           return event;  

    }  

      

    public void setPDU() throws IOException {  

           // set PDU  

           PDU pdu = new PDU();  

           pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.2011.2.15.2.1.2.1.1.1.1"), new OctetString("SNMPTEST")));  
           
           pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.2011.2.15.2.1.2.1.1.1.2"), new Integer32(10)));  
           
           pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.2011.2.15.2.1.2.1.1.1.3"), new OctetString(new Date().toString()))); 
           
           pdu.setType(PDU.TRAP);  

           sendPDU(pdu);  

    }  

      

    public void getPDU() throws IOException {  

           // get PDU  

           PDU pdu = new PDU();  

           pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 5, 0 })));  

           pdu.setType(PDU.GET);  

           readResponse(sendPDU(pdu));  

    }  

      

    public void readResponse(ResponseEvent respEvnt) {  

           // 解析Response  

           if (respEvnt != null && respEvnt.getResponse() != null) {  

                  Vector<VariableBinding> recVBs = (Vector<VariableBinding>) respEvnt.getResponse().getVariableBindings();  

                  for (int i = 0; i < recVBs.size(); i++) {  

                         VariableBinding recVB = recVBs.elementAt(i);  

                         System.out.println(recVB.getOid() + " : " + recVB.getVariable());  

                  }  

           }  

    }  

      

    public static void main(String[] args) {  

           try {  
        	   SnmpUtil util = new SnmpUtil();  
        	   
        	   util.initComm();  
        	   
        	   util.setPDU();
        	   
        	   util.getPDU();
           } catch (IOException e) {  

                  e.printStackTrace();  

           }  

    }  
}

 

 

分享到:
评论

相关推荐

    SNMP实例大全--snmp4j(get ,trap,set,取mib)

    本文将详细介绍SNMP实例,特别是通过Java库snmp4j实现的GET、GETNEXT、SET操作以及TRAP发送和MIB获取。 1. **SNMP基本概念** SNMP由三个主要组件构成:管理站(Manager)、代理(Agent)和管理信息库(MIB)。管理...

    用SNMP4J实现的Trap源码

    在这个项目中,"用SNMP4J实现的Trap源码"是基于JAVA语言利用SNMP4J库编写的,旨在帮助开发者理解和实践如何通过编程方式实现SNMP Trap的功能。下面将详细解释相关的知识点: 1. **SNMP4J库**:SNMP4J是一个开源的...

    snmp4j get walk

    6. **在SNMP4J中实现GET WALK**:在SNMP4J中,可以通过`Target`对象指定要通信的设备,通过`Session`对象发送请求。使用`CommandResponder`监听响应,并通过`PDU`对象处理GET和GET NEXT请求。`...

    基于SNMP4J的SNMP操作实现代码

    本文将深入探讨如何使用SNMP4J来实现SNMP的基本操作,包括GET、GETNEXT、SET和TRAP。 1. SNMP协议基础: SNMP协议主要由管理站(Manager)和代理(Agent)两部分组成。管理站负责发送请求并接收响应,而代理则驻留...

    使用Java进行SNMP编程-SNMP4J-代码实例

    在这份文档中,提到了几个SNMP4J中实现的操作,包括GET、GETNEXT、GETBULK、Walk和SET。 GET请求用于检索单个或多个管理对象实例的值。这是最基本的操作,通常用来获取一个或多个特定的管理信息库(MIB)对象的值。...

    snmp4j.rar_SNMP_SNMP4J.jar_snmp4j的jar包_网络设备监控

    SNMP4J是一个Java实现的SNMP协议库,使得Java开发者能够轻松地在应用程序中集成SNMP功能,从而对网络设备进行监控和管理。 SNMP4J.jar是这个库的核心组件,包含了SNMP协议的各种操作所需的类和方法。这个压缩包中的...

    snmp4j源码和API

    SNMP4J是一个Java实现的简单网络管理协议(SNMP)的应用编程接口(API),它提供了全面的功能,用于开发SNMP应用。SNMP是网络管理领域的重要标准,用于监控和管理网络设备,如路由器、交换机和服务器。下面将详细...

    使用snmp4j实现Snmp功能

    总的来说,使用snmp4j实现SNMP功能涉及初始化SNMP客户端、设置目标设备、创建和发送PDU,以及处理返回的响应。这个过程可以扩展到更复杂的SNMP操作,包括遍历MIB树、批量GET请求、设置设备属性等。了解这些基础知识...

    snmp4j包来读取snmp协议数据

    读取SNMP变量:SNMP4j通过`GetRequest`或`GetNextRequest`实现对网络设备的查询。以下是如何获取特定OID(Object Identifier)的值: ```java PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID("1.3.6.1....

    snmp4j的jar包

    4. **发送PDU**:通过Session对象发送Get、Set或Trap请求,SNMP4J会自动封装这些请求为适当的PDU格式。 5. **处理响应**:定义事件监听器来处理接收到的响应,包括成功返回的数据、错误信息或者陷阱通知。 SNMP4J还...

    snmp4j.zip_java使用snmp4j_snmp4j_snmp4j java

    SNMP4J是一个Java库,专门用于实现简单网络管理协议(SNMP)的应用程序。SNMP是一种广泛应用于网络设备管理的标准协议,它允许系统管理员远程监控和管理网络设备,如路由器、交换机、服务器等。在Java环境中,SNMP4J...

    snmp4j api文档

    SNMP4J是一个开源的Java实现的简单网络管理协议(SNMP)库,它提供了全面的API用于开发SNMP应用程序。本文将深入解析SNMP4J API的核心概念和主要功能,帮助开发者理解和利用这个强大的工具。 ## SNMP简介 SNMP,即...

    snmp4j的jar包,源码和api

    开发者可以通过导入这个jar包,直接在Java项目中调用SNMP4J的功能,进行SNMP通信,如发送GET、SET请求,接收TRAP等。 2. **源码**:包含在`snmp4j_source`中,提供给了开发者查看和学习SNMP4J内部实现的机会。通过...

    SNMP4J 的jar包

    SNMP4J是一个Java实现的简单网络管理协议(SNMP)的开源库,它提供了全面的SNMPv1、SNMPv2c和SNMPv3支持,包括代理(Agent)和管理站(Manager)的功能。这个jar包包含了SNMP4J的核心组件以及SNMP4J-Agent扩展,用于...

    snmp4j实现的mib浏览器

    总的来说,利用SNMP4J实现MIB浏览器涉及到SNMP协议的理解、SNMP4J库的使用、MIB文件的解析以及用户界面的设计。这个过程可以帮助我们深入理解网络管理,并提供一种有效监控和配置网络设备的手段。通过不断优化和扩展...

    C# snmp get和set方法实现,含源码

    在C#中实现SNMP操作,主要包括GET和SET请求,这两个是SNMP协议的基础操作。 GET方法在SNMP中用于查询网络设备的状态或获取特定变量的值。GET请求通常由管理站(如你的C#应用程序)发起,然后由代理(网络设备)响应...

    snmp4j-agent官方源码

    SNMP4J-Agent能处理各种类型的PDU,包括GetRequest, GetNextRequest, SetRequest和Trap等。 3. **变量绑定**:在SNMP请求和响应中,数据是通过变量绑定进行传输的。SNMP4J-Agent提供了解析和构建变量绑定的功能。 ...

    如何利用snmp4j-agent在PC端模拟snmp服务

    SNMP4J-Agent是SNMP4J项目的一部分,是一个开源的Java库,用于实现SNMP代理功能。它提供了丰富的API,可以方便地构建自定义的SNMP代理。通过模拟SNMP服务,开发者可以在没有实际网络设备的情况下测试SNMP客户端应用...

    java利用snmp4j包来读取snmp协议数据

    SNMP4J是一个开源的Java库,专门设计用于实现SNMP协议的客户端功能,使得开发者能够从网络设备中读取或设置管理信息。本篇文章将详细探讨如何使用SNMP4j库在Java中读取SNMP协议数据。 首先,了解SNMP是必要的。SNMP...

Global site tag (gtag.js) - Google Analytics