手机端小强原创文章,java小强个人博客站点
当前位置: 首页 >> 开源 >> SNMP 在Windows上建一个SNMP服务并获得该机器的机器名

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

38880 开源 | 2014-11-10

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

大家知道,要接触一个新的东西总要写一些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来访问服务获得内容并展示即可 

 点击下载

推荐您阅读更多有关于“ Windows snmp HelloWorld XP ”的文章

上一篇:UDP 上传文件 下一篇:SNMP 修改SNMP4J消息内容 之TCP发送模式

猜你喜欢

发表评论:

个人资料
blogger

java小强
没有思考,人生的路会越走越难!

搜索
分类
最新微语
  • 车也学了,年也过了,生日也过了,村里的会也赶了,这次,是真的,年过去了。不过我没回京,也没有在家找工作,我在等什么吗?反正现在正合了我这个懒人的要求,不过,我歇不住,思考下人生。

    2018-03-20 00:11

  • 8月1日,我已离开奋斗多年的北京。不知道是暂时的离开,还是永久的离别,反正已经离职在家,告别每日上班,每天苦累的煎熬,过一段属于自己的生活。以前是专职工作,现在专职生活。

    2017-08-18 12:47

  • 又弄完一个项目,累成狗,但是感觉又进步不少,除了很多坑已经踩过,做起来也是轻车熟路。同时也认识到,程序不在于你多牛逼,而是在乎你的细节把控度,而细节的关注,是一个优秀程序员必须要注意的。另外,要相信自己,勇敢向前,没人生下来就是成功的,而且,成功的路,比成功本身更重要。

    2017-06-30 09:46

  • 今日北京再次沙尘暴来袭,吃了几年细粮,终于能来口粗粮了,不过大早上看见这场景,还是吓我一跳,不过随后就平静了,毕竟是老朋友了。进公司又发现一股烤糊的味道,真是祸不单行啊,例外都是污染。发了两个口罩,开启保护模式。

    2017-05-04 10:16

  • 今天同学问我,最近还在写代码吗?我想了想,这个问题怎么回答呢,我好像确实很长时间,虽然写了一些,但是主要内容已经不是写代码了。然后再想想,自己也7年多了,这么多年了,我收获了什么,我的目标到底是什么。眼看就奔三了,人生啊,开启感叹模式。

    2017-03-30 22:52

  • 更多»

最新文章
热门文章
随机文章