用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
相关推荐
jyOverQ2 小时前
RabbitMQ 消息积压怎么办?Prefetch、消费者并发与扩容
分布式·后端·rabbitmq
东风破_9 小时前
从跨域到 WebSocket:前端跨域方案、SSE 与双向实时通信详解
前端·后端
行百里er11 小时前
Gateway 上别硬塞 MVC:DeferredImportSelector 看菜下锅
spring boot·后端·开源
名字还没想好☜11 小时前
Java 遍历时删元素抛 ConcurrentModificationException:fail-fast 原理与三种正确删法
后端
IT_陈寒12 小时前
React Hooks闭包陷阱差点让我加班到凌晨
前端·人工智能·后端
码事漫谈12 小时前
本体论,彻底懂
后端
创新技术阁12 小时前
FastapiAdmin 系统日志体系与核心配置参数详解
前端·后端·fastapi
掘金者阿豪12 小时前
SQL Server 迁到金仓,真正麻烦的不是数据,而是这些 T-SQL
后端
Kyrie_kk13 小时前
Java--IO--Path文件访问
java·后端
wxwx_bscxy32213 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物