`
cuisuqiang
  • 浏览: 3956240 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3666782
社区版块
存档分类
最新评论

SNMP 在Windows上建一个SNMP服务并获得该机器的机器名

阅读更多

今天这个示例很简单,主要是为了让大家很快的建立一套能够走通的测试环境!

大家知道,要接触一个新的东西总要写一些HelloWorld的东西,或者把内容走同,不然自己会非常的纠结!

 

为了简单起见,现在在Windows上建立一个SNMP服务环境,XP系统也自带了该服务的支持!

控制面板中打开添加或删除程序!

 

 

 然后点击对钩安装如上选项,安装两个服务:

 

 

安装后会在服中看到SNMP服务内容

 

 

然后我们需要安装一个软件,这个软件可以查看机器的MIB树:

HiliSoft MIB Browser是一款强大、易用的网络管理和分析工具。它可以加载SNMP的MIB文件并快速进行解析,建构两个树形视图:MIB结点视图和MIB文件(模块)视图。 使用这两个视图,用户可以非常容易地通过SNMPv1/v2c/v3协议来浏览和修改SNMP代理上变量的值。内建有trap receiver,可以收集SNMP代理发送的trap。

安装后他会自动加载自己预先定义的MIB内容,直接运行该程序,然后打开是机器名称的节点

 

 

GET一下,你就能获得该机器的名称,但是要注意的是,该节点的OID是 1.3.6.1.2.1.1.5 ,但是你程序里面访问时应该是 1.3.6.1.2.1.1.5.0 ,因为该软件GET时把该OID下的所有OID实例都会显示出来

Value就是我的机器名称,也可以通过该MIB树查看其他内容

 

然后我们通过SNMP4J来访问该OID,来获得计算机名称:

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;

/**
 * @说明 SNMP4J测试
 * @author 崔素强
 * @version 1.0
 * @since
 */
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());
			}
		}
	}

	
}

 

打印结果如下:

------------>解析Response<-------------
1.3.6.1.2.1.1.5.0 : 796AF67B7B0140E

 

我们通过实例OID获得到了计算机SNMP服务提供的信息!

 

当然这这是个开始,实际中服务端的OID定义是公司事先定义好的,服务也是由其他开发人员提供,而你只需要通过预先配置的OID来访问服务获得内容并展示即可 

 

用到的软件上传上去,大家可以玩玩! 

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

17
20
分享到:
评论

相关推荐

    SNMP开发应用(包括dotnet和使用第三方控件)

    创建一个SNMP GET请求,设置目标IP、社区字符串(对于SNMP V1和V2c)和oid,然后发送请求并解析响应以获取机器名。 `TestForm.sln`文件是Visual Studio解决方案文件,包含了项目的配置信息和引用。打开此文件,我们...

    Windows环境下安装MRTG

    MRTG 的安装过程需要 Perl 的支持,需要先下载并安装 Active Perl for Windows,然后下载 MRTG 并解压到一个目录。安装完成后,需要配置网络设备,以交换机为例,需要开启 SNMP,并将团体名和设备 IP 地址配置好。...

    ecks:一种无需处理 MIB 即可从 SNMP 中获取数据的简单方法

    埃克斯在原版《黑衣人》漫画中,一位名叫 Ecks 的特工出轨了,想要消灭 MiB。 这个小的 Python 库有一个类似的目标...... Ecks 提供了一种使用 SNMP 从远程机器获取数据的简单方法,而无需处理单个 MIB 或 OID。 ...

    zenoss监控配置手册

    【Zenoss监控配置手册】 ...总之,Zenoss监控配置涵盖了安装SNMP服务和WMI支持,以及在Windows和网络设备上进行相应的安全配置。正确配置这些组件后,Zenoss将能够有效地监控和管理IT基础设施的各个方面。

    mib browser安装使用说明

    1. 将UCD-DISKIO-MIB.my和UCD-SNMP-MIB.my这两个文件放置在一个没有中文字符且路径不深的目录下,例如D:\mibfiles。 2. 双击上述任意一个MIB文件,打开MIB Browser进行编译。 3. 点击界面上的编译按钮,选择步骤1中...

    c#检测局域网内所有机器

    4. **IPHostEntry类**:如果目标设备回应了ping请求,可以使用`Dns.GetHostEntry`方法获取关于该IP的详细信息,包括主机名、别名和IP地址列表。 5. **套接字编程**:更深入的网络探测可能涉及TCP或UDP套接字通信。...

    Nagios配置之监控远程主机插件安装(案例).pdf

    - 在Nagios服务器上,编辑`/usr/local/nagios/etc/objects/windows.cfg`文件,定义要监控的新Windows机器。 - 定义一个主机条目,如: ``` define host{ use windows-server ; 继承Windows服务器模板的默认值 ...

    HP服务器SmartStart 7.doc

    8. **输入序列号和机器名**:安装过程中,必须输入操作系统的合法序列号以及服务器的主机名。 9. **SNMP配置**:可选地,用户还可以配置SNMP(Simple Network Management Protocol),以便于远程监控和管理服务器。...

    HP Openview NNM 中文资料(1)

    为提升安全性,应修改默认的共同体名,如“Public”和“Private”,这通常在“控制面板/管理工具/服务/SnmpService属性/安全”中进行。 #### 四、网络节点的发现与管理 安装完毕后,NNM将执行网络节点的自动发现,...

    mac-计算机名-工作组-ip局域网扫描器

    在IT领域,网络管理和安全是至关重要的部分,而局域网扫描器则是一个非常实用的工具,用于在本地网络上获取设备信息。标题中的“mac-计算机名-工作组-ip局域网扫描器”指的是一个软件工具,它能够快速地扫描局域网内...

    网络编程书籍讲义PPT学习教案.pptx

    3. DNS服务,解析主机名到IP地址,反之亦然。 4. 拨号支持,如PPP和串行线路连接。 5. PPTP和L2TP,用于创建虚拟专用网络。 6. 网络打印支持,如Lpr/Lpd协议。 7. SNMP代理,用于网络设备的管理和监控。 8. NetBIOS...

    Getting Started with MRTG

    如果是在 Windows 上安装 MRTG,则需要先启用 SNMP 服务。具体步骤如下: 1. **打开“控制面板”**。 2. **选择“添加/删除程序”**。 3. **点击“添加/删除 Windows 组件”**。 4. **找到并选中“管理工具”**。 5...

    HP服务器SmartStart CD使用详解.doc

    11. **输入序列号和机器名**:安装系统前,必须输入有效的序列号,并为服务器设置一个唯一的机器名。 12. **SNMP配置**:可选步骤,用户可以选择配置SNMP(简单网络管理协议),以便远程监控和管理服务器状态。 13...

    局域网扫描器 不错的工具

    快速智能的扫描引擎,可以快速扫描网络上计算机的计算机名、IP地址、MAC地址、SNMP、工作组名、用户名称、操作系统类型、服务器类型、备注、共享文件夹,隐藏共享、共享打印机、共享文件夹属性(是否可写、只读或者...

Global site tag (gtag.js) - Google Analytics