Java通过SNMP4J管理设备

这篇具有很好参考价值的文章主要介绍了Java通过SNMP4J管理设备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Windows开启SNMP服务

这里以Windows11为例:

1、安装SNMP服务

(1)通过win+x快捷键打开电脑“设置”,然后在“应用”中选择”可选功能“。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(2)点击”可选功能“的”查看功能“

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(3)找到并勾选“WMI SNMP 供应商",再点击”下一步“。这里借用下百度的图,因为本人已经安装好。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(4)安装”WMI SNMP 供应商",再点击“安装”,最后等待安装完成即可。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(5)安装完之后即可看到。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

至此,SNMP已经安装完毕。接下来就是做一些基础配置,这样才能真正的通过Java代码获取到设备的信息。

2、配置SNMP服务

(1)打开服务,找到SNMP。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(2)双击SNMP服务,选择“安全”。然后配置社区名称和接收哪些主机的SNMP报文,如下图所示。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

至此,SNMP的配置彻底完成。接下来要做的就是通过代码获取设备信息。

二、代码实现

(1)引入SNMP4J的jar包

如果是Maven工程,直接引入依赖。

<dependency>
    <groupId>org.snmp4j</groupId>
    <artifactId>snmp4j</artifactId>
    <version>2.8.3</version>
</dependency>

如果是在IDEA的lib目录下引入jar包,则先将下载的jar包放入lib目录下,然后选中jar包,右键选择Add as Library即可。

这里给出maven的网址:https://mvnrepository.com/

对于一些jar包的下载,也可以通过该网址去下载。

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

(2)代码实现

只要和其他电脑在同一个局域网,并且其他电脑开启了SNMP服务,那么就可以通过更改IP地址,实现对与之相连的局域网内的所有主机的信息的获取。而通过更改不同的OID,就可以实现对主机的其他信息的获取。

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.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;

import java.io.IOException;

/**
 * 获取设备信息
 *
 * @author zengLingYao
 * @date 2021/12/02
 */
public class Test {
    /**
     * 获取系统基本信息
     */
    public final static String SYS_DESC = "1.3.6.1.2.1.1.1";
    /**
     * 获取机器名
     */
    public final static String SYS_NAME = "1.3.6.1.2.1.1.5";
    /**
     * 监控时间
     */
    public final static String SYS_UPTIME = "1.3.6.1.2.1.1.3";

    public static void main(String[] args) {
        try {
            System.out.println("基本信息:"+getMessageByIpAndOid("192.168.1.111",SYS_DESC));
            System.out.println("获取机器名:"+getMessageByIpAndOid("192.168.1.111",SYS_NAME));
            System.out.println("监控时间:"+getMessageByIpAndOid("192.168.1.111",SYS_UPTIME));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String getMessageByIpAndOid(String ip, String oid) throws Exception{
        String variableString = "";
        try{
            //设定CommunityTarget
            CommunityTarget myTarget = new CommunityTarget();
            //机器的地址
            Address address = GenericAddress.parse("udp:"+ip+"/161");
            //设定地址
            myTarget.setAddress(address);
            //设置snmp共同体
            myTarget.setCommunity(new OctetString("public"));
            //设置超时重试次数
            myTarget.setRetries(2);
            //设置超时的时间
            myTarget.setTimeout(5*60);
            //设置使用的snmp版本
            myTarget.setVersion(SnmpConstants.version2c);
            //设定采取的协议
            TransportMapping<UdpAddress> transport = new DefaultUdpTransportMapping();
            //调用TransportMapping中的listen()方法,启动监听进程,接收消息,由于该监听进程是守护进程,最后应调用close()方法来释放该进程
            transport.listen();
            //创建SNMP对象,用于发送请求PDU
            Snmp protocol = new Snmp(transport);
            //创建请求pdu,获取mib
            PDU request = new PDU();
            //调用的add方法绑定要查询的OID
            request.add(new VariableBinding(new OID(oid)));
            //调用setType()方法来确定该pdu的类型
            request.setType(PDU.GETNEXT);
            //调用 send(PDU pdu,Target target)发送pdu,返回一个ResponseEvent对象
            ResponseEvent responseEvent = protocol.send(request, myTarget);
            //通过ResponseEvent对象来获得SNMP请求的应答pdu,方法:public PDU getResponse()
            PDU response=responseEvent.getResponse();
            //输出
            if(response != null){
                //通过应答pdu获得mib信息(之前绑定的OID的值),方法:VaribleBinding get(int index)
                VariableBinding vb = response.get(0);
                System.out.println(vb);
                variableString = String.valueOf(vb.getVariable());
                //调用close()方法释放该进程
                transport.close();
            }

        }catch(IOException e){
            e.printStackTrace();
        }
        return variableString;
    }

}

执行结果如下:

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

以上就是整个的配置和代码获取的过程。还有一个注意点就是:如果是局域网内的设备信息采集,需要将管理站的信息配置在SNMP服务的IP地址列表中,如下图:

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

管理站即运行代码的电脑的IP地址是:192.168.1.101,而被管理站的IP地址是192.168.1.111.因此在被管理站的SNMP服务中配置了管理站的IP地址。

也可以直接将被管理站的SNMP服务直接设置为“接受来自任何主机的SNMP数据包”,如下图:文章来源地址https://www.toymoban.com/news/detail-624528.html

snmp4j,Java,java,网络协议,后端,Powered by 金山文档

到了这里,关于Java通过SNMP4J管理设备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SNMP 计算机网络管理 实验3(二)SNMP协议工作原理验证与分析

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月11日
    浏览(24)
  • SNMP(简单网络管理协议)详解

    SNMP(简单网络管理协议) : 专门用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理

    2024年02月02日
    浏览(30)
  • SNMP 计算机网络管理 实验2(三) SNMP服务与常用网管命令之任务五:查看端口流量及实验小结

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月12日
    浏览(25)
  • snmp trap 与snmp相关介绍、安装、命令以及Trap的发送与接收java实现

    1.1、什么是Snmp SNMP是英文\\\"Simple Network Management Protocol\\\"的缩写,中文意思是\\\"简单网络管理协议\\\"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目

    2024年02月02日
    浏览(39)
  • SNMP 计算机网络管理 实验2(二) SNMP服务与常用网管命令之任务三:对同学的计算机进行网络管理 任务四:查询计算机网卡的相关信息

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月12日
    浏览(48)
  • 计算机网络管理-SNMP网络管理中遇到的问题及解决

    在实验中我发现,进入SNMPc 工具后,因为先前我是开启了网络发现的功能的,因此程序会自动生成拓补图,自动生成的网络规划是错误的,如下图所示: 我的设备:cdypc没有自动匹配到192.168.31.0的网段中,查看设备在SNMPc中的设备信息,我发现,cdypc的IP确实不在192.168.31.0的网

    2024年02月09日
    浏览(37)
  • zabbix 监控 windows 系统、java应用、SNMP

    目录 一、部署 zabbix 监控 windows系统 1.下载 Windows 客户端 Zabbix agent 2 2.安装客户端,在监控的windows主机上配置 3.在服务端 Web 页面添加主机,关联模板 二、部署 zabbix 监控 Java应用 1.客户端开启 java jmxremote 远程监控功能 1.1配置 java jmxremote 远程监控功能 1.2启动服务,查看端口

    2024年02月15日
    浏览(32)
  • SNMP 计算机网络管理 实验1(二) 练习与使用Wireshark抓取SNMP数据包抓包之 任务三分析并验证TCP三次握手建立连接时三次握手工作过程

    ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 🙉联系作者🙈by QQ:813942269🐧 🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事

    2024年02月12日
    浏览(44)
  • zabbix proxy的配置及zabbix实现高可用(监控 windows,java应用,SNMP等)

    zabbix 分布式代理服务器,可以代替zabbix server 采集性能和可用性数据。zabbix proxy 在zabbix 的部署是可选部分。 zabbix proxy 的部署可以很好的分担单个zabbix server 的负载 通常监控大于500台主机时使用,需要进行分布式监控架构部署 分布式监控的作用: ●分担 server 的集中式压力

    2024年02月15日
    浏览(28)
  • SNMP协议详细介绍及SNMP监控LXD端口流量

    1.1 SNMP原理 网络设备越来越多,网络规模越来越大,管理这些设备也越来越重要。远程管理网络的需求日益迫切, SNMP 应运而生。 SNMP 即\\\"简单网络管理协议\\\",用于网络管理的协议,用于网络设备的管理。 SNMP 被设计为工作在 TCP/IP 协议族上, SNMP 基于 TCP/IP 协议工作,对网络

    2024年01月19日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包