`
Josh_Persistence
  • 浏览: 1649885 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Win7安装和配置SNMP - java使用SNMP4j获取监控信息

    博客分类:
  • snmp
阅读更多

一、配置和启动SNMP服务

 

通过SNMP监控Windows主机需要在被监控的服务器上安装简单网络管理协议(SNMP)的Windows组件,以Windows 7系统为例:

首先,在控制面板中找到“卸载程序”;
 

控制面板

在弹出的窗口中单击“打开或关闭Windows功能”;
 

添加功能

勾选弹出窗口中的“简单网络管理协议(SNMP)”项后单击“确定”并根据提示完成安装即可。
 

完成SNMP服务的安装并重启计算机后,右键单击“计算机”选择“管理”
 

在弹出的“计算机管理”窗口中左侧导航栏中找到“服务”,并在右侧找到“SNMP Service”项;
 

鼠标双击“SNMP Service”选项,在弹出的窗口中切换到“安全”选项卡中,如上图添加“接受的社区名称”和接收哪些主机发出的SNMP数据包,在本例中,为了方便测试,可以添加localhost。

“接受的社区名称”是自己定义的任意字符都可以,接收那些主机发出的SNMP数据包定义成你的Nagios服务器即可。

 

到这里被监控端的Windows主机的SNMP服务就配置完成了。
 
二、使用简单的SNMP4j来进行SNMP数据的抓取
 package com.ebay.tools;


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.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SNMPTestExample {

   public static void main(String[] argsthrows Exception {
       System.out.println(" --------------- SNMPExample start ---------------");
       
       TransportMapping<UdpAddress> transportMapping = new DefaultUdpTransportMapping();
       Snmp snmp = new Snmp(transportMapping);
       transportMapping.listen();
       
       ResponseEvent response = null;
       
       PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.2.0")));
        pdu.setType(PDU.GET);
        
        String address = "localhost" + "/" + 161;
        
        Address targetAddress = new UdpAddress(address);
       CommunityTarget target = new CommunityTarget();
       
       target.setCommunity(new OctetString("public")); // 改字符串是我们在上面配置的
       target.setAddress(targetAddress);
       target.setRetries(2);
       target.setTimeout(3000);
       target.setVersion(SnmpConstants.version2c);
       
        response = snmp.get(pdu, target);
       
        System.out.println("result: " + response.getResponse());
    
        System.out.println(" --------------- SNMPExample ended ---------------");
   }
}

 
如果你的SNMP的版本是version3,必须加入安全机制相关的代码:
 
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.Target;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.PrivDES;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SNMPExampleVersion3 {

   public static void main(String[] argsthrows Exception {
       TransportMapping<UdpAddress> transportMapping = new DefaultUdpTransportMapping();
       Snmp snmp = new Snmp(transportMapping);
       
       USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
       SecurityModels.getInstance().addSecurityModel(usm);
       
       transportMapping.listen();
       
       
       ResponseEvent response = null;
       
       ScopedPDU pdu = new ScopedPDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.2.0")));
        pdu.setType(PDU.GETNEXT);
        
        String[] communities = {"private", "cur", "console", "public", "dashboard"};
        
        // String address = "10.14.228.24"; // phxlb129a.phx.ebay.com        big ip
        // String address = "10.10.66.82"; // sr-filer07b.smf.ebay.com    filer
        String address = "localhost";  // lvslb05a.lvs.ebay.com   netscaler
        address = address + "/" + 161;
        
        for (String communityString : communities{
            Address targetAddress = new UdpAddress(address);
           Target target = new UserTarget();
           
           
              //添加用户
           snmp.getUSM().addUser(
               new OctetString("MD5DES"),
               new UsmUser(new OctetString("MD5DES"), AuthMD5.ID,
                 new OctetString("MD5DESUserAuthPassword"), PrivDES.ID,
                 new OctetString("MD5DESUserPrivPassword")));
             
             //设置安全级别
           target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
           target.setSecurityName(new OctetString("MD5DES"));
           target.setVersion(SnmpConstants.version3);
           pdu.setContextName(new OctetString(communityString));
           target.setAddress(targetAddress);
           target.setRetries(2);
           target.setTimeout(3000);
           target.setVersion(SnmpConstants.version3);
           
        // response = snmp.send(pdu, getTarget(), null);
            response = snmp.get(pdu, target);
           
            System.out.println("result: " + response.getResponse());
        }
    
       
   }
}
0
0
分享到:
评论

相关推荐

    使用Java进行SNMP编程-SNMP4J-代码实例

    通过这些基础知识点的学习,网络管理员可以利用Java语言和SNMP4J库完成服务器监控的工作,比如监控服务器的CPU负载、内存使用情况、磁盘空间以及各种网络接口的状态等。这对于维护服务器的稳定运行和及时发现网络...

    net-snmp-5.9.4

    SNMP协议通过简单的GET、SET操作来获取或设置网络设备的配置信息,同时提供TRAP机制用于设备向管理站报告异常事件。SNMP由三个主要组件构成:管理信息库(MIB)、管理站和代理。 二、net-snmp-5.9.4特性 1. 多平台...

    net-snmp-5.7.2.tar.gz

    Cacti利用SNMP协议从网络设备收集数据,如CPU利用率、内存使用情况、网络流量等,然后通过图形化界面展示出来,便于监控和故障排查。因此,net-snmp-5.7.2作为Cacti的数据采集工具,需要先进行安装和配置。 首先,...

    SNMP实例大全--snmp4j(get ,trap,set,取mib)

    通过上述内容,你应能掌握使用snmp4j库进行SNMP操作的基本方法,包括获取和设置MIB值,发送TRAP,以及在SNMPv3环境下的安全配置。这个eclipse工程提供了一个实用的起点,帮助你开始在Java项目中集成SNMP功能。

    net-snmp-5.7.3.tar.gz

    4. **日志监控**:配置日志记录,以便于跟踪和分析SNMP操作,帮助诊断问题。 通过以上步骤,你就可以成功地在你的系统中安装并运行net-snmp-5.7.3了。这个过程不仅锻炼了你的Linux操作技能,也让你更好地理解了网络...

    net-snmp-5.8.tar.gz

    通过解压、编译和安装net-snmp-5.8.tar.gz,我们可以获得SNMP代理和客户端工具,并利用其丰富的插件系统实现高效、灵活的网络监控。无论是新手还是经验丰富的系统管理员,掌握Net-SNMP都是提升网络管理能力的重要一...

    snmp_Java进行SNMP通信_SNMP协议_snmp配置_常用OID_snmp.jar_snmp4j_.jar

    这是我学习SNMP从零开始的学习资料,因为这方面的资料网上比较少,现拿出来和大家分享! 目录: docs_1.4.1 jar/jpcap.jar jar/SNMP4J.jar jar/snmp4jclt-1.2.1.zip jar/snmp.jar 基于java的Oid获取软件.rar Java...

    SNMP安装包-net-snmp-utils-5.7.2-49.el7_9.2.x86_64

    SNMP安装包-net-snmp-utils-5.7.2-49.el7_9.2.x86_64

    SNMP4J远程获取设备信息案例

    SNMP4J是一个Java库,专门用于实现简单网络管理协议(SNMP)的应用程序。SNMP是网络管理和监控的...通过学习和应用SNMP4J,你可以有效地获取和处理网络设备的各种信息,这对于网络监控、故障排查和性能优化至关重要。

    net-snmp-5.5

    它们可以通过查询设备的MIB信息,获取设备的配置、性能和连接状态,从而构建网络的拓扑结构。 网络拓扑发现是网络管理中的重要环节,它能够帮助管理员了解网络设备间的物理和逻辑连接关系,识别潜在的问题,优化...

    snmp4j-agent

    SNMP4J-Agentx 2.5.2版本的源码、示例和jar包包含在这个压缩包中,对于开发者来说是一个非常有价值的资源,可以帮助他们深入理解SNMP协议以及如何在Java环境中实现它。 SNMP(Simple Network Management Protocol)...

    用snmp4j获取本地所有oid

    总结起来,通过在Windows上配置SNMP服务和使用Snmp4j库,我们可以轻松地在Java应用程序中获取本地设备的所有OID信息。这为网络管理、监控和故障排查提供了强大的工具。同时,深入理解和熟练运用Snmp4j,能够帮助IT...

    Java使用SNMP4J实现snmp trap接口发送消息_20170808_LK

    本文将详细讲解如何使用Java的SNMP4J库来实现SNMP Trap接口,发送这些消息。 首先,我们需要了解SNMP4J库。SNMP4J是Java平台上的一个开源SNMP库,它提供了完整的SNMPv1、SNMPv2c和SNMPv3支持。该库不仅包含SNMP协议...

    snmp4j.zip_java使用snmp4j_snmp4j_snmp4j java

    SNMP4J是一个Java库,专门用于实现简单网络管理协议(SNMP)的应用程序。SNMP是一种广泛应用于网络设备管理的标准协议,它允许...这份文档将帮助你深入理解和应用SNMP4J库,以便在Java环境中有效地管理和监控网络设备。

    net-snmp-5.4.3

    通过实际操作,例如设置SNMP代理,使用命令行工具查询设备信息,或者编写简单的SNMP应用程序,可以加深对SNMP的理解和应用。同时,配合MIB查看器,可以更有效地管理和维护网络设备。 总的来说,Net-SNMP-5.4.3是一...

    net-snmp-5.5x64x86.zip

    - **snmpwalk**:这是一个非常有用的命令,用于遍历SNMP代理提供的所有MIB对象,帮助用户获取网络设备上的大量信息,如接口状态、内存使用情况、CPU负载等。 - **snmpget**:此命令用于获取特定的MIB对象值,用户...

    snmp-java-source_1.4.2

    3. **ReadMe**:提供了关于项目的基本信息和使用指南,包括如何安装、如何运行示例代码等。 4. **build.xml**:这是Apache Ant的构建文件,Ant是Java的一个构建工具,用于自动化构建过程,类似于Java项目的`pom.xml...

    如何利用snmp4j-agent在PC端模拟snmp服务

    SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许管理员远程监控和配置网络设备。本文将深入探讨如何使用SNMP4J-Agent工具在个人计算机上模拟SNMP服务,以便进行测试和开发。 SNMP4J-Agent是...

    net-snmp-5.4.0-1.win32.exe

    net-snmp-5.4.0-1.win32.exe应用平台windows

    net-snmp-5.5.0-2.x64

    snmpget用于获取单个MIB对象的值,而snmpwalk则可以递归地获取整个MIB树的值,这对于了解网络设备的状态和配置非常实用。 在net-snmp-5.5.0-2.x64中,除了命令行工具外,还包括C语言编写的库函数,开发者可以利用...

Global site tag (gtag.js) - Google Analytics