用springboot开发一个snmp采集程序,并最终生成拓扑图 (二)

其实不用springboot我们也可以开发snmp采集,只是为了后面的需要我们才要用上springboot, 一开始可以直接用java就够了

先后尝试了vscode, idea老版,最后使用idea社区版与通义灵码来做这个事, 这事自己找个顺手的就好,只是我好久不弄,不得不先从搭开发环境开始

pom.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>snmpcli1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.release>8</maven.compiler.release>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>

            <groupId>org.snmp4j</groupId>


            <artifactId>snmp4j</artifactId>


            <version>2.8.4</version>


        </dependency>
    </dependencies>
</project>

需要ctrl+shift+O 做下maven sync

Main.java

ini 复制代码
package org.example;

import org.snmp4j.*;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        String address = "udp:192.168.10.252/161";
        String community = "public";
        String oid = "1.3.6.1.2.1.1.1.0";
        try{
            TransportMapping transport = new DefaultUdpTransportMapping();
            transport.listen();
            Snmp snmp = new Snmp(transport);

            PDU pdu = new PDU();
            pdu.add(new VariableBinding(new OID(oid)));
            pdu.setType(PDU.GET);

            Address targetAddress = GenericAddress.parse(address);
            Target target = new CommunityTarget(targetAddress, new OctetString(community));
            target.setRetries(2);
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version2c);

            ResponseEvent response = snmp.send(pdu, target);
            PDU responsePDU = response.getResponse();
            if (responsePDU!=null){
                System.out.println("Response: " + responsePDU.get(0).getVariable());

            }else {
                System.out.println("Timeout");
            }
            snmp.close();
        }catch(Exception e){
            e.printStackTrace();
        }

    }
}

OK shift+F10执行会得到结果

vbscript 复制代码
Response: S5700-28C-EI 
Huawei Versatile Routing Platform Software 
 VRP (R) software,Version 5.130 (S5700 V200R003C00SPC300) 
 Copyright (C) 2007 Huawei Technologies Co., Ltd.

Process finished with exit code 0
相关推荐
程序员cxuan25 分钟前
Codex 会把磁盘给烧了?完整复盘来了!
人工智能·后端·程序员
ClouGence1 小时前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
快乐肚皮1 小时前
深入理解Loop Engineering
前端·后端
小兔崽子去哪了2 小时前
Vue3 + Pinia 集成 IGV.js 实现 BAM 文件在线浏览
javascript·vue.js·后端
孟陬2 小时前
Claude Code 巧思 `Ctrl+S` 暂存键
前端·后端
雪隐2 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
Oneslide2 小时前
openEuler 17.1GB Everything ISO 离线本地 DNF 源搭建教程
后端
蝎子莱莱爱打怪3 小时前
那不是我的黑历史,那是我的来时路啊!😭😭
后端·程序员
用户298698530143 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
蝎子莱莱爱打怪3 小时前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试