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实例,特别是通过Java库snmp4j实现的GET、GETNEXT、SET操作以及TRAP发送和MIB获取。 1. **SNMP基本概念** SNMP由三个主要组件构成:管理站(Manager)、代理(Agent)和管理信息库(MIB)。管理...
在这个项目中,"用SNMP4J实现的Trap源码"是基于JAVA语言利用SNMP4J库编写的,旨在帮助开发者理解和实践如何通过编程方式实现SNMP Trap的功能。下面将详细解释相关的知识点: 1. **SNMP4J库**:SNMP4J是一个开源的...
6. **在SNMP4J中实现GET WALK**:在SNMP4J中,可以通过`Target`对象指定要通信的设备,通过`Session`对象发送请求。使用`CommandResponder`监听响应,并通过`PDU`对象处理GET和GET NEXT请求。`...
本文将深入探讨如何使用SNMP4J来实现SNMP的基本操作,包括GET、GETNEXT、SET和TRAP。 1. SNMP协议基础: SNMP协议主要由管理站(Manager)和代理(Agent)两部分组成。管理站负责发送请求并接收响应,而代理则驻留...
在这份文档中,提到了几个SNMP4J中实现的操作,包括GET、GETNEXT、GETBULK、Walk和SET。 GET请求用于检索单个或多个管理对象实例的值。这是最基本的操作,通常用来获取一个或多个特定的管理信息库(MIB)对象的值。...
SNMP4J是一个Java实现的SNMP协议库,使得Java开发者能够轻松地在应用程序中集成SNMP功能,从而对网络设备进行监控和管理。 SNMP4J.jar是这个库的核心组件,包含了SNMP协议的各种操作所需的类和方法。这个压缩包中的...
SNMP4J是一个Java实现的简单网络管理协议(SNMP)的应用编程接口(API),它提供了全面的功能,用于开发SNMP应用。SNMP是网络管理领域的重要标准,用于监控和管理网络设备,如路由器、交换机和服务器。下面将详细...
总的来说,使用snmp4j实现SNMP功能涉及初始化SNMP客户端、设置目标设备、创建和发送PDU,以及处理返回的响应。这个过程可以扩展到更复杂的SNMP操作,包括遍历MIB树、批量GET请求、设置设备属性等。了解这些基础知识...
读取SNMP变量:SNMP4j通过`GetRequest`或`GetNextRequest`实现对网络设备的查询。以下是如何获取特定OID(Object Identifier)的值: ```java PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID("1.3.6.1....
4. **发送PDU**:通过Session对象发送Get、Set或Trap请求,SNMP4J会自动封装这些请求为适当的PDU格式。 5. **处理响应**:定义事件监听器来处理接收到的响应,包括成功返回的数据、错误信息或者陷阱通知。 SNMP4J还...
SNMP4J是一个Java库,专门用于实现简单网络管理协议(SNMP)的应用程序。SNMP是一种广泛应用于网络设备管理的标准协议,它允许系统管理员远程监控和管理网络设备,如路由器、交换机、服务器等。在Java环境中,SNMP4J...
SNMP4J是一个开源的Java实现的简单网络管理协议(SNMP)库,它提供了全面的API用于开发SNMP应用程序。本文将深入解析SNMP4J API的核心概念和主要功能,帮助开发者理解和利用这个强大的工具。 ## SNMP简介 SNMP,即...
开发者可以通过导入这个jar包,直接在Java项目中调用SNMP4J的功能,进行SNMP通信,如发送GET、SET请求,接收TRAP等。 2. **源码**:包含在`snmp4j_source`中,提供给了开发者查看和学习SNMP4J内部实现的机会。通过...
SNMP4J是一个Java实现的简单网络管理协议(SNMP)的开源库,它提供了全面的SNMPv1、SNMPv2c和SNMPv3支持,包括代理(Agent)和管理站(Manager)的功能。这个jar包包含了SNMP4J的核心组件以及SNMP4J-Agent扩展,用于...
总的来说,利用SNMP4J实现MIB浏览器涉及到SNMP协议的理解、SNMP4J库的使用、MIB文件的解析以及用户界面的设计。这个过程可以帮助我们深入理解网络管理,并提供一种有效监控和配置网络设备的手段。通过不断优化和扩展...
在C#中实现SNMP操作,主要包括GET和SET请求,这两个是SNMP协议的基础操作。 GET方法在SNMP中用于查询网络设备的状态或获取特定变量的值。GET请求通常由管理站(如你的C#应用程序)发起,然后由代理(网络设备)响应...
SNMP4J-Agent能处理各种类型的PDU,包括GetRequest, GetNextRequest, SetRequest和Trap等。 3. **变量绑定**:在SNMP请求和响应中,数据是通过变量绑定进行传输的。SNMP4J-Agent提供了解析和构建变量绑定的功能。 ...
SNMP4J-Agent是SNMP4J项目的一部分,是一个开源的Java库,用于实现SNMP代理功能。它提供了丰富的API,可以方便地构建自定义的SNMP代理。通过模拟SNMP服务,开发者可以在没有实际网络设备的情况下测试SNMP客户端应用...
SNMP4J是一个开源的Java库,专门设计用于实现SNMP协议的客户端功能,使得开发者能够从网络设备中读取或设置管理信息。本篇文章将详细探讨如何使用SNMP4j库在Java中读取SNMP协议数据。 首先,了解SNMP是必要的。SNMP...