- 浏览: 388340 次
- 性别:
- 来自: 北京
最新评论
-
liuzhongzhou2721:
不错啊
Snmp4j编程简介之三:Snmp -
ahong520:
我在Keystore.getInstance("JK ...
java实现 SSL双向认证 -
tanghanlin:
好吧,还是支持下
Snmp4j编程简介之三:Snmp -
sjp524617477:
mark
java实现 SSL双向认证 -
dikesky:
您好,看了您的这篇文章学到很多东西。希望您提供一个QQ号(发到 ...
httpclient笔记(二)
#mib.properties #Fri Jul 11 15:57:28 CST 2008 1.3.6.1.2.1.1.6.0=beijing 1.3.6.1.2.1.1.8.0=test 1.3.6.1.2.1.1.5.0=admin 1.3.6.1.2.1.1.7.0=8899
mib搞的两天不是很明白,于是自己定义了个配置文件来充当mib库,mib.properties
下面的例子是服务器端,也就是manager:
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 SnmpUtil { private Snmp snmp = null; private Address targetAddress = null; public void initComm() throws IOException { // 设置Agent方的IP和端口 targetAddress = GenericAddress.parse("udp:192.168.10.191/161"); 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.version1); // 向Agent发送PDU,并返回Response return snmp.send(pdu, target); } public void setPDU() throws IOException { // set PDU PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID(new int[] { 1, 3, 6, 1, 2, 1, 1, 7, 0 }), new OctetString("8899"))); pdu.setType(PDU.SET); 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, 6, 0 })));// pcName pdu.setType(PDU.GET); readResponse(sendPDU(pdu)); } 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()); } } } public static void main(String[] args) { System.out.println("----------start-------------"); try { SnmpUtil util = new SnmpUtil(); util.initComm(); util.setPDU(); util.getPDU(); } catch (IOException e) { e.printStackTrace(); } } }
agent代理端代码:
import java.util.*; /** * agent代理端 * leo * 20080710 */ import org.snmp4j.*; import org.snmp4j.smi.*; import snmputil.Config; public class OTAAgent { public static class Handler implements org.snmp4j.CommandResponder { protected java.lang.String mAddress = null; protected int mPort = 0; protected java.lang.String mMyCommunityName = null; protected org.snmp4j.TransportMapping mServerSocket = null; protected org.snmp4j.Snmp mSNMP = null; public Handler() { } public void configure() { mAddress = "192.168.10.191"; mPort = 161; mMyCommunityName = "OAagent"; } public void start() { try { mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping( new org.snmp4j.smi.UdpAddress(java.net.InetAddress .getByName(mAddress), mPort)); mSNMP = new org.snmp4j.Snmp(mServerSocket); mSNMP.addCommandResponder(this); mServerSocket.listen(); } catch (java.net.UnknownHostException vException) { System.out.println(vException); } catch (java.io.IOException vException) { System.out.println(vException); } } public synchronized void processPdu( org.snmp4j.CommandResponderEvent aEvent) { java.lang.String vCommunityName = new java.lang.String(aEvent .getSecurityName()); System.out.println("Community name " + vCommunityName); org.snmp4j.PDU vPDU = aEvent.getPDU(); Config config=new Config(); if (vPDU == null) { System.out.println("Null pdu"); } else { System.out.println("(rcv) " + vPDU.toString()); switch (vPDU.getType()) { case org.snmp4j.PDU.GET: case org.snmp4j.PDU.GETNEXT: break; case org.snmp4j.PDU.SET: System.out.println("------SET----------"); String reciv=vPDU.get(0).getVariable().getSyntaxString(); System.out.println("----set------"+vPDU.get(0).toString()); String setoid=vPDU.get(0).toString(); System.out.println("-----set-----"+setoid.substring(0, setoid.indexOf("=")-1)); System.out.println("-----set-----"+setoid.substring(setoid.indexOf("=")+1)); config.setValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim(), setoid.substring(setoid.indexOf("=")+1).trim()); } org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation(); org.snmp4j.mp.StateReference ref = aEvent.getStateReference(); try { System.out.println("Sending response"); vPDU.setType(PDU.RESPONSE); OID oid=vPDU.get(0).getOid(); String setoid=vPDU.get(0).toString(); System.out.println("----get------"+setoid.substring(0, setoid.indexOf("=")-1)); System.out.println("-----get-----"+setoid.substring(setoid.indexOf("=")+1)); vPDU.set(0, new VariableBinding(oid, new OctetString(config.getValueByOID(setoid.substring(0, setoid.indexOf("=")-1).trim())))); aEvent.getMessageDispatcher().returnResponsePdu( aEvent.getMessageProcessingModel(), aEvent.getSecurityModel(), aEvent.getSecurityName(), aEvent.getSecurityLevel(), vPDU, aEvent.getMaxSizeResponsePDU(), ref, statusInformation); } catch (org.snmp4j.MessageException vException) { System.out.println(vException); } } } } public static void main(String argv[]) { Handler h = new Handler(); /** 初始化参数 * */ h.configure(); h.start(); /** Do nothing loop * */ while (true) { System.out.println("----------loop-------------"); synchronized (OTAAgent.class) { try { OTAAgent.class.wait(); } catch (Exception e) { } } } } }
还有一个就是获取和保存mib信息的类:
package snmputil; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import java.util.Properties; public class Config { Properties properties; Map map; public Config() { properties = new Properties(); try { properties.load(new FileInputStream("mib.properties")); } catch (IOException e) { System.out.println("读取properties文件错误"); e.printStackTrace(); } } /** * 根据oid获取value * * @param oid * @return */ public String getValueByOID(String oid) { return properties.getProperty(oid); } public void setValueByOID(String oid, String value) { properties.setProperty(oid, value); try { properties.store(new FileOutputStream("mib.properties"),"mib.properties"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //测试主函数 public static void main(String[] args) { Config cfg=new Config(); String oid="1.3.6.1.2.1.1.8.0"; System.out.println("---------"+cfg.getValueByOID(oid)); cfg.setValueByOID(oid, "test"); System.out.println("---------"+cfg.getValueByOID(oid)); } }
- log4j-1.2.9.jar (344 KB)
- 下载次数: 465
- SNMP4J.jar (360.9 KB)
- 下载次数: 875
评论
7 楼
agileclipse
2012-04-18
代码还要细看下,有没有中文的api发下
6 楼
agileclipse
2012-04-18
运行无错
5 楼
516456267
2011-06-27
楼主不用自己模拟mib库,只要主机装了snmp服务,就可以用system组的mib
--system .1.3.6.1.2.1.1
--sysDescr .1.3.6.1.2.1.1.1
--sysObjectID .1.3.6.1.2.1.1.2
--sysUpTime .1.3.6.1.2.1.1.3
--sysContact .1.3.6.1.2.1.1.4
--sysName .1.3.6.1.2.1.1.5
--sysLocation .1.3.6.1.2.1.1.6
--sysServices .1.3.6.1.2.1.1.7
这组mib都是可以取到值的
另外,我没太理解agent代理端代码,因为貌似只要运行SnmpUtil的代码,将上述的mib装入VariableBinding中就可以有返回值了。
--system .1.3.6.1.2.1.1
--sysDescr .1.3.6.1.2.1.1.1
--sysObjectID .1.3.6.1.2.1.1.2
--sysUpTime .1.3.6.1.2.1.1.3
--sysContact .1.3.6.1.2.1.1.4
--sysName .1.3.6.1.2.1.1.5
--sysLocation .1.3.6.1.2.1.1.6
--sysServices .1.3.6.1.2.1.1.7
这组mib都是可以取到值的
另外,我没太理解agent代理端代码,因为貌似只要运行SnmpUtil的代码,将上述的mib装入VariableBinding中就可以有返回值了。
4 楼
hanyexiaoxiao
2009-06-22
你有没有实际项目里头的源码啊,能发份给我看看么?现在被snmp4j搞得头都大了...
3 楼
hanyexiaoxiao
2009-06-22
老大,按照你写的,在服务端打印不出返回值,但也不报错,不知道啥原因
2 楼
longge
2009-02-12
楼主是我的偶像啊
1 楼
mindxw
2008-07-25
建议楼主从设计上讲一下。
发表评论
-
JOB小结
2009-03-27 09:53 1210众所周知,一般操作系统会提供定时执行任务的方法,例如:Unix ... -
安装JDK1.6.0.03
2009-03-26 10:51 1479一、安装JDK1.6.0.031、安装:上传bin包至服 ... -
常用端口
2008-11-28 15:38 1319端口号码 / 层 名称 注释 1 tcpmux ... -
我的blog文章精选(pdf电子书)
2008-11-20 15:39 1486用javaeye提供的make pdf功能,制作了自己的第 ... -
SAAJ-soap附件传递
2008-09-11 11:32 2687Web 服务协议已经从支持 ... -
删除指定目录下的所有文件
2008-07-02 16:18 845public static void del(String f ... -
httpclient笔记(二)
2008-06-30 18:37 2681不多说了,直接上示例 ... -
httpclient笔记(一)
2008-06-25 18:55 10957Jakarta的httpclient3.1是最新版本,项目中需 ... -
以WEB方式监控平台运行情况
2008-06-20 16:21 1989最近公司有个项目,其中有一块要求如下: 以WEB方式监控平台运 ... -
snmp网络监控程序问题
2008-06-13 16:44 2511最近公司有个项目,其中有一块要求如下: 以WEB方式监控平台运 ... -
MyEclipse快捷键与插件大全(搜藏来自wangyu)
2008-06-13 14:52 1554MyEclipse快捷键与插件大全 该文来自wangyu,为 ... -
【Find Bugs——eclipse之BUG检测插件】
2008-06-13 11:12 4350【Find Bugs——eclipse之BUG检测插件】 是一 ... -
soap学习笔记(一)
2008-04-24 20:26 1614最近开发项目用到soap,于是开始研究相关资料,一边学习, ...
相关推荐
通过阅读代码和运行示例,你可以深入理解SNMP协议和snmp4j的使用方法。 10. **安全性和认证** SNMPv3引入了安全模型,允许管理站和代理之间进行认证和加密。snmp4j库支持配置SNMPv3安全参数,如用户名、密码、加密...
在本示例中,我们将深入探讨如何使用SNMP4J进行异步调用,以及在实际项目中应用这些技术。 首先,我们来看`SnmpSingleValueTest.java`文件。这个文件可能包含一个用于获取或设置单个SNMP变量值的测试用例。在SNMP4J...
在提供的“snmp4j.pdf”文档中,你将找到更多关于如何使用SNMP4J的详细示例和教程,包括初始化设置、发送请求、处理响应、以及设置陷阱监听器等内容。这份文档将帮助你深入理解和应用SNMP4J库,以便在Java环境中有效...
SNMP(Simple Network Management Protocol,简易网络管理协议)是一种广泛应用于网络管理的协议,SNMP4J 是一个基于 Java 的 SNMP 库,提供了完整的 SNMP 功能实现。本文将详细介绍使用 SNMP4J 实现 SNMP Trap 发送...
在Java环境中,SNMP4J库为开发者提供了便利,可以用来读取和操作SNMP协议的数据。本文将深入探讨如何利用SNMP4j包来读取SNMP协议数据。 首先,理解SNMP4j的基本概念至关重要。SNMP4j是一个开源的Java库,完全实现了...
在提供的文件中,`snmp4j_all`可能是SNMP4J的完整库,包含了所有相关类和资源;`snmp4j-1.11.1-javadoc`是API文档,可以帮助开发者了解每个类和方法的用途及用法;`help_doc`可能包含额外的帮助文档,提供使用示例和...
SNMP4J的API文档(如SNMP4J_API_en_s1.chm)包含了详细的类和方法描述,以及示例代码,是学习和使用SNMP4J的重要参考资料。开发者可以通过查阅文档,了解每个类的功能、方法的参数和返回值,以便更有效地使用SNMP4J...
SNMP4J-Agentx 2.5.2版本的源码、示例和jar包包含在这个压缩包中,对于开发者来说是一个非常有价值的资源,可以帮助他们深入理解SNMP协议以及如何在Java环境中实现它。 SNMP(Simple Network Management Protocol)...
标题中的"snmp4j-1.9.3d.zip_snmp4j-1.9.3d_snmp管理工具"表明这是一个版本为1.9.3d的SNMP4J库的压缩包,它包含了对SNMP协议的支持和一些管理功能。 SNMP,全称Simple Network Management Protocol,是一种应用层...
在提供的压缩文件列表中,"www.pudn.com.txt"可能是一个包含更多关于SNMP4J使用示例或MIB模拟细节的文本文件,而"snmp"可能是一个实际的代码文件或目录,包含具体的SNMP4J示例代码。为了进一步学习和实践,你应该...
SNMP4j库为Java开发者提供了一个完整的SNMP解决方案,包括PDU(协议数据单元)的构建、编码、解码以及错误处理等功能。使用SNMP4j,你可以轻松地创建SNMPv1、SNMPv2c或SNMPv3的请求,并处理来自目标设备的响应。 ...
Snmp4j提供了丰富的API来执行SNMP操作,以下是一个简单的示例代码: ```java import org.snmp4j.*; import org.snmp4j.mp.MPv1; import org.snmp4j.mp.MPv2c; import org.snmp4j.security.*; import org.snmp4j.smi...
本文将深入探讨如何使用SNMP4J-Agent工具在个人计算机上模拟SNMP服务,以便进行测试和开发。 SNMP4J-Agent是SNMP4J项目的一部分,是一个开源的Java库,用于实现SNMP代理功能。它提供了丰富的API,可以方便地构建...
SNMP4J是Java开发人员实现SNMP功能的首选工具,因为它提供了完整的SNMPv1、v2c和v3支持,包括Trap处理、Get、Set操作以及Walk机制。在实际应用中,我们可以通过以下步骤使用SNMP4J: 1. **导入SNMP4J库**:首先,在...