- 浏览: 388311 次
- 性别:
- 来自: 北京
最新评论
-
liuzhongzhou2721:
不错啊
Snmp4j编程简介之三:Snmp -
ahong520:
我在Keystore.getInstance("JK ...
java实现 SSL双向认证 -
tanghanlin:
好吧,还是支持下
Snmp4j编程简介之三:Snmp -
sjp524617477:
mark
java实现 SSL双向认证 -
dikesky:
您好,看了您的这篇文章学到很多东西。希望您提供一个QQ号(发到 ...
httpclient笔记(二)
命令行工具: 在远程代理上执行SNMP操作,如SNMP GET、SNMP GETNEXT、SNMP SET、SNMP BULK和SNMP WALK。
在设计过程中,我们使用了其一系列高层components和UI Beans,如SnmpTarget、SnmpTable等,
其高层API的层次结构如下所示:
图1-6 Overview of High-Level API
(关于具体的Adventnet SNMP API介绍及API的具体结构层次与使用方法请参见其Documentation)
三,功能实现及结果展示
1,开发环境及辅助工具的安装与配置
(1),JDK的安装与配置
程序设计实现采用Java语言,开发工具为JDK1.5.10,此工具可以在Http://java.sun.com免费下载,下载后运行即可安装。安装完后需要设置环境变量。在我的电脑->高级->环境变量 中选择“Path”变量,在前面加入“%JDK_Home%/bin”,其中“%JDK_Home%”表示用户的JDK安装目录,而ClassPath变量在1.5.10版的JDK下实际上是可以不用配置的。
(2),AdventNet SNMP API 4的安装与配置。
程序设计采用了AdventNet的SNMP API开发工具包,此工具可以在Http://www.adventnet.com.cn免费下载,下载后运行即可安装,安装完后需要设置ClassPath环境变量,在其中加入
.; %AdventNet API_Home%\jars\AdventNetLogging.jar; %AdventNet API_Home%\jars\AdventNetSnmp.jar; %AdventNet API_Home%\jars\ JimiProClasses.zip
其中,“.”代表当前目录,%AdventNet API_Home%表示AdventNet SNMP API 4的安装目录。这些类包都是我在程序设计中要用到的。
(3),SNMP代理服务的安装
在程序试验及调试过程中,我们需要有SNMP代理进程来检验程序是否设计正确、能否得到正确结果,由于条件有限,我只有在自己的及局域网内的其它PC机上安装了Windows系统光盘附带的SNMP简单网络管理协议组件。
安装过程为:
在控制面板中打开“添加和删除程序”,选择“添加和删除Windows组件”,选择“管理和监视工具”,点击“详细信息”,勾选“简单网络管理协议”,依次点击确定,插入光盘即可完成安装。安装完成后,需要开启SNMP服务才能生效。在控制面板中打开“管理工具”,打开“服务”,将“SNMP Service”服务项开启即可。
2,程序设计及结果展示
本设计的难点在于协议的理解及开发工具包AdventNet Snmp Api的使用,程序设计实现较为简单,只有一个源代码文件:MibExplorer.java,代码量400行左右。程序运行主界面如图3-1所示:
图3-1程序运行主界面
(注:界面左侧为装载了的MIB模型的JPanel,右侧的一系列JTextField接收一系列参数,按钮执行一系列操作,中间的JTextArea显示Get,GetNext及Set的操作结果,Clear清空结果,右下的JTextArea显示Mib对象的描述信息。“File”菜单里的“Save Result As...”项允许将执行结果保存到外存)
程序有四个主要操作实现四个主要功能:Get,GetNext,GetTable,Set
² Get和GetNext: 用于读取设备MIB信息库中实例对象的单个值,Get取OID表示的对象实例当前值,GetNext则是取下一值。循环利用GetNext操作可遍历MIB中的对象。
² GetTable: 用于读取设备MIB信息库中以表的形式存储的对象实例。
² Set: 用于简单的设置MIB中可读写的对象实例的值。
程序的其它部分为界面的设计(采用GridBagLayout+GridLayout等布局管理器),MIBTree的处理,以及一些附加的功能(如保存结果到文件,MIB对象的描述显示等)。
主要功能的执行流程图及核心代码和执行结果展示:
(其中用到的hostStr,oidStr,portStr,comStr分别代表主机、对象标识符、端口、共同体的字符串形式)
1) Get及GetNext操作:
A. 执行流程图:
图3-2 Get及GetNext执行流程
B. 核心代码:
SnmpTarget target = new SnmpTarget();
//新建SnmpTarget对象(原类参见AdventNet SNMP API)
target.setTargetHost(hostStr);
target.setTargetPort(Integer.valueOf(portStr).intValue());
target.setObjectID(oidStr);
target.setCommunity(comStr);
//设置target的各项参数
if(source==get||source==getB)
result=target.snmpGet();
//执行SNMP协议中的Get操作
else
{
result=target.snmpGetNext();
//执行SNMP协议中的GetNext操作
oid.setText(target.getObjectID());
}
if(result==null)
{
mess.append(target.getErrorString()+"\n");
//显示错误或操作失败的信息
}
else
{
mess.append("HOST:"+target.getTargetHost()+"\tOID:"+target.getSnmpOID()+"\n");
mess.append("Response received. Value:\n" + result+"\n");
//展示操作得到的结果
result=null;
}
C. 结果展示:
图3-3 Get及GetNext操作的结果展示
(注:中间蓝色字体部分为取得的结果,如:OID:.1.3.6.1.2.1.1.1.0代表system组的sysDescr,即对系统的软硬件描述信息,这些都可以在前面给出的相应的表中查到)
2) GetTable操作:
A. 执行流程图:
图3-4 GetTable操作执行流程图
B. 核心代码:
SnmpTablePanel snmptablepanel=new SnmpTablePanel();
//新建SnmpTablePanel对象,用于呈现取表的结果(原类请参见Advent SNMP API)
snmptablepanel.setTargetHost(hostStr);
snmptablepanel.setTargetPort(Integer.valueOf(portStr).intValue());
snmptablepanel.setCommunity(comStr);
//设置snmptablepanel取表所需要的各项参数
try
{
snmptablepanel.loadMibs("RFC1213-MIB");
//装载MIB模型
snmptablepanel.setTableOID(oidStr);
//设置对象ID,必须在loadMib之后
tableFrame(snmptablepanel,oidStr).setVisible(true);
//调用tableFrame(),将返回的JFrame显示
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(this,ex,"Error!",JOptionPane.ERROR_MESSAGE);
//提示出错信息,如错误的OID
}
其中tableFrame(snmptablepanel,oidStr)方法的定义如下:
JFrame tableFrame(JPanel panel,String title)
{
//此方法将传递的SnmpTablePanel显示在新建的JFrame里,并返回
JFrame frame=new JFrame(title);
int x,y;
Dimension size=Toolkit.getDefaultToolkit().getScreenSize();
x=(size.width-700)/2;
y=(size.height-400)/2;
frame.setSize(700,400);
frame.setLocation(x,y);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(panel);
return(frame);
}
C. 结果展示:
图3-5 用GetTable操作得到的tcpConnTable表
(注:tcpConnTable表给出的是运行Snmp代理进程的网络设备当前存在的所有TCP连接的情况,图中从左至右的字段分别代表TCP连接状态,本地地址和端口号,远程地址和端口号。利用GetTable操作同样可以得到其它的表的相关信息,如ifTable,udpTable等)
3) Set操作:
A. 执行流程图:
图3-6 Set操作执行流程图
B. 核心代码:
//Set操作跟前面的Get及GetNext的初始化部分基本相同
String writeCommStr=String.valueOf(writeComm.getPassword());
//Write Community用于设置操作的身份验证
String valueStr=setValue.getText();
if(writeCommStr.equals("")||valueStr.equals(""))
{
JOptionPane.showMessageDialog(this,"No WriteCommunity Or Set Value !","Error!",JOptionPane.WARNING_MESSAGE);
}
else
{
SnmpTarget target = new SnmpTarget();
target.setTargetHost(hostStr);
target.setTargetPort(Integer.valueOf(portStr).intValue());
target.setObjectID(oidStr);
target.setCommunity(comStr);
target.setWriteCommunity(writeCommStr);
try
{
result=target.snmpSet(valueStr);
//即执行SNMP协议中的Set操作
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(this,ex,"Error!",JOptionPane.WARNING_MESSAGE);
//弹出抛出的异常信息
}
if(result==null)
{
mess.append(target.getErrorString()+"\n");
//显示出错信息于结果区
}
else
{
//展示设置成功的相关信息于结果区
mess.append("HOST:"+target.getTargetHost()+"\tOID:"+target.getSnmpOID()+"\n");
mess.append("Set Success!. \n" + result+"\n");
result=null;
}
}
四,总结
SNMP是一种简单的、SNMP管理进程和SNMP代理进程之间的请求-应答协议,也上一种易于实现的基本的网络管理工具,它能够满足短期的管理要求。本文详细介绍了SNMP 及相关协议、模型的原理。描述了协议工作及信息采集的过程,并用程序实现了初步查看网络设备的状态。
在设计的过程中,我们收获不少,学到了许多网络管理方面的知识,并且把理论与实践相结合,真正实现了代码级别的网络设备信息采集。在设计完成后,我们不仅对Java语言有了更深的认识,还初步掌握了利用开发工具包进行程序开发的过程和要点。此次设计让我们积累了用Java进程网络编程的宝贵经验,而设计的成果也让我们对Java语言以及网络产生了更深厚的兴趣。
我们还发现,只要足够努力,平时看起来非常复杂,让人望而生畏的工作其实并不难,战胜困难的过程其实就是知识与经验积累的过程。
参考文献
[1]. 杨家海 任宪坤 王沛瑜
发表评论
-
你可能不知道的10个JavaScript小技巧
2010-09-07 17:05 1076“梦想天空”(网名)曾发表一篇博文,为我们介绍了10个Java ... -
监控利器nagios
2009-04-01 17:32 3070我的Nagios的艰辛.....网络监控之神(一)本贴原创,转 ... -
Tomcat配置指南(转载)
2009-03-11 10:54 1150Tomcat配置指南(转载) 一 ... -
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
2009-02-27 14:33 1244这是一篇程序员写给程 ... -
SnmpHibernate
2008-12-18 14:44 1793SnmpHibernate is a MIB/Object ... -
常用的数字编码格式
2008-12-17 17:39 2601常用数字编码1.BCD编码 在数字系统中,各种数据要转换为二进 ... -
Java中四种XML解析技术之不完全测试
2008-12-16 11:00 1017测试环境: AMD毒龙1.4G ... -
Javascript闭包技术
2008-11-24 09:46 1386一、什么是闭包?“官 ... -
多线程
2008-07-25 16:35 1480线程:是指进程中的 ... -
Apache,Resin,JVM 状态监控
2008-07-24 13:21 3261不管你是网站系统管理员,还是WEB开发人员,了解你的WEB应用 ... -
使用Jconsole对java的内存使用情况(JVM)进行监控
2008-07-24 11:26 2818JDK1.5提供JMX remote的管理工具Jconsole ... -
Linux下网络流量监控
2008-07-24 10:23 2018(一) 系统环境:redhat9.0 必备软件: (这些软件都 ... -
net-snmp安装手记
2008-07-23 11:45 4770对于更多的net-snmp的资料,可以去www.net-snm ... -
net-snmp安装手记
2008-07-23 11:36 7564Installing /usr/share/man/man3/ ... -
RFC1155基于TCP/IP网络的管理结构和标记
2008-07-10 10:37 2305组织:中国互动出版网(http://www.china-pub ... -
Snmp4j编程简介之三:Snmp
2008-07-03 13:03 9533Class Snmp java.lang.Object o ... -
Snmp4j编程简介之二:PDU
2008-07-03 13:00 6707PDU(协议数据单元),用来表示管理站跟代理站点进行通信的数据 ... -
Snmp4j编程简介之一:Target
2008-07-03 12:57 4744关于Snmp4j包,最重要三个概念,也是三个类:Snmp、Ta ... -
Java远程通讯可选技术及原理
2008-06-23 11:45 1352Java远程通讯可选技术及原理 在分布式服务框架中 ... -
基于Spring的远程访问与Web Service(二)
2008-06-20 16:33 5016Spring框架对远程访问技 ...
相关推荐
基于SNMP/MIB的网络数据获取系统设计与实现
【基于SNMP/MIB的网络数据获取系统设计与实现】 简单网络管理协议(SNMP,Simple Network Management Protocol)是互联网工程任务组(IETF)定义的一套标准协议,主要用于管理和监控IP网络上的设备。SNMP协议允许...
《基于SNMP/MIB的网络数据获取系统设计与实现》 SNMP(简单网络管理协议)和MIB(管理信息库)是网络管理和监控领域的核心工具。本系统设计旨在通过SNMP协议,从网络设备中收集数据,并利用MIB进行信息的组织和管理...
在这个"SNMP.zip"压缩包中,我们可以看到一个关于"基于SNMP MIB的网络数据获取系统设计与实现"的项目。这个系统利用Java语言开发,其目标是通过SNMP协议从网络设备中收集和处理数据,这些数据可能包括设备状态、性能...
本篇研究与设计基于SNMP的网络管理系统,详细阐述了SNMP协议的组成、工作模型以及网络管理系统的构成和总体设计。 SNMP的网络管理框架主要由三个部分组成:SMI(管理信息结构)、MIB(管理信息库)和SNMP协议本身。...
基于SNMP_MIB的网络数据获取系统设计与实现,包括源代码实现以及文件说明。
### 基于SNMP/Web的园区网络管理系统中配置模块的实现方法 #### 一、概述 随着互联网技术的快速发展,网络系统变得越来越复杂且多样化,这对网络管理提出了更高的要求。为了有效地管理和监控网络,Internet核心...
标题中的“JAVA基于SNMP网络设备MIB信息采集”是一个典型的IT计算机领域的研究主题,它涉及到网络管理、Java编程和SNMP(简单网络管理协议)技术。这篇毕业论文设计可能是关于如何使用Java语言来实现一个SNMP客户端...
标题中的“JAVA基于SNMP网络设备MIB信息采集(论文源代码).rar”表明这是一个关于使用Java编程语言实现SNMP(简单网络管理协议)来采集网络设备MIB(管理信息库)信息的毕业答辩项目。SNMP是互联网标准协议,用于管理...
该系统设计的核心在于如何有效利用SNMP(Simple Network Management Protocol,简单网络管理协议)来实现网络状态的实时监控和故障处理。 SNMP是一种广泛应用于网络管理的协议,它基于Client/Server模型,采用代理/...
首先,"基于SNMP网络设备MIB信息采集项目说明报告.doc"应该是项目的设计文档,详细介绍了系统的目标、功能、架构和实现方法。这份文档可能会涵盖以下几个关键点: 1. **项目目标**:系统旨在自动收集网络设备的MIB...
在此背景下,基于SNMP(简单网络管理协议)的FTTH网络管理系统的设计与实现显得尤为重要。 首先,需要了解SNMP的基本原理。SNMP是一种广泛使用的网络管理协议,它允许网络管理员监控网络设备的状态、配置和性能,并...
基于SNMP的网络流量监控系统的设计与实现是一种利用简单网络管理协议(Simple Network Management Protocol,简称SNMP)来收集网络设备信息,并对网络流量进行监控的技术方案。这种监控系统主要用于网络管理和故障...
《基于SNMP的通信网络性能管理模块设计与实现》 通信网络的性能管理是网络管理中的核心环节,其目标在于优化网络性能,提升运行质量。ISO定义的网络管理五大功能域中,性能管理负责测试网络各单元的性能,包括网络...
标题中的“Java 开发JAVA基于SNMP网络设备MIB信息采集”是指使用Java编程语言来实现SNMP(简单网络管理协议)对网络设备上的MIB(Management Information Base,管理信息库)信息进行采集的一种技术实践。...
SNMP源自简单网关监视协议(SGMP,Simple Gateway Monitor Protocol),其主要功能是使管理工作站能够远程管理和监控所有支持SNMP协议的网络设备,如路由器、交换机、服务器等,以实现网络状态的监视、设备配置的...