java基于winbox 工具下使用 api获取映射表api数据

2023-10-30

Winbox 是基于 windows下远程管理 ROS的软件,提供直观方便的图形界面。用它能登陆路由器,这个路由器是软路由ROUTEOS制作的,用Winbox登陆后,就可以配置路由器了,用这个软件便于配置路由器。Winbox控制台使用TCP8291端口,在登陆到路由器后可以通过Winbox控制台操作MikroTik路由器的配置并执行与本地控制台同样的任务。

基于ros 路由的配置,我们可以对ip进行数据解析分析服务,对ros产生的ip详细dns日志收录,对流量记录等。

使用winbox:左边是工具的使用,我们可以用

链接:https://pan.baidu.com/s/1kgJ_RougILQzIQUGj-ljdA 
提取码:bqlx

Manual:API - MikroTik Wiki ROS 是 一个比较流行的软路由系统,它的强大在于它的高度定制性,它提供了应用程序编程使用的API接口,是它应用更加灵活,我们可以自己开发软件或WEB程序来操控ROS,比较实用的例子就是当用ROS管理小区网络时,我们用自己写的软件来管理上网账号,安全又方便。下面是官网,已经简单命令的使用。

Manual:API - MikroTik Wiki

 (这里的api是需要通过命令输入查询才行)

 这里我们通过命令可以去跑数据,那如何把这个数据通过api读取到我们程序来呢?

git地址

https://github.com/GideonLeGrange/mikrotik-java

可以吧代码拉到本地看看源码。 

如何集成到springboot程序里面?我们只需要一个maven包就行了。

<dependency>
    <groupId>me.legrange</groupId>
    <artifactId>mikrotik</artifactId>
    <version>3.0.7</version>
</dependency>

与Ros通信至少需要哪些参数?

host: {}, port: {}, rosUserName: {}, rosPassword: {},Socket:{}

 

获取连接:

 /**
     * 获取rosconnect 连接
     *
     * @return
     */
    public static ApiConnection getRosConnection() {
        try {
            //建立连接超时时间限制
            ApiConnection con = ApiConnection.connect(SocketFactory.getDefault(), host, ApiConnection.DEFAULT_PORT, 30000);
            //命令执行超时时间限制
            con.setTimeout(500000);
            con.login(rosUserName, rosPassword);
            return con;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

 执行命令:

  public static List<Map<String, String>> execute(ApiConnection conn, String command) {

        try {
            return conn.execute(command);
        } catch (MikrotikApiException e) {
            e.printStackTrace();
        }

        return null;
    }

测试数据已经可以拿到了:

 工具类。需要测试换成你自己的地址。

package com.nanianxiatian.springboot.util;

import me.legrange.mikrotik.ApiConnection;
import me.legrange.mikrotik.ApiConnectionException;
import me.legrange.mikrotik.MikrotikApiException;

import javax.net.SocketFactory;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;

/**
 * <p>
 * ros data
 *
 * @author yangchang
 * @since 2022-03-06
 */
public class RosUtils {

    /**
     * host
     */
    private static String host = "116.6.2.251";

    private static int port = 8291;

    private static String rosUserName = "admin";

    private static String rosPassword = "admin";


    /**
     * 获取rosconnect 连接
     *
     * @return
     */
    public static ApiConnection getRosConnection() {
        try {
            //建立连接超时时间限制
            ApiConnection con = ApiConnection.connect(SocketFactory.getDefault(), host, ApiConnection.DEFAULT_PORT, 30000);
            //命令执行超时时间限制
            con.setTimeout(500000);
            con.login(rosUserName, rosPassword);
            return con;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }


    public static List<Map<String, String>> execute(ApiConnection conn, String command) {

        try {
            return conn.execute(command);
        } catch (MikrotikApiException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void logout(ApiConnection conn) {

        try {
            if (conn != null) {
                conn.close();
            }
        } catch (ApiConnectionException e) {
          //  log.error("", e);
        }
    }

    public static void main(String args[]) {
        //执行命令ros脚本命令
        String command = "/ip/firewall/address-list/print";
        ApiConnection connection = getRosConnection();
        List<Map<String, String>> existsList = execute(connection, String.format(command));
        List<String> list = existsList.stream().map(m -> m.get("address")).collect(Collectors.toList());
        logout(connection);
        System.out.println("其他");

    }


}

拿到数据就可以愉快的操作了。

喜欢记得一键三连。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java基于winbox 工具下使用 api获取映射表api数据 的相关文章

随机推荐

  • 0-1背包问题和完全背包问题

    先总体介绍一下0 1背包和完全背包的区别 主要是01背包和完全背包 背包九讲里面的其他背包问题 都是竞赛级别的 leetcode上面没有 01背包就是 背包存在一个最大容量V 每个物品有两个参数 体积w和价值v 目的是在不超过背包最大容量的
  • 利用 mysql.help_topic 生成序列

    有时我们在生成一些时间轴类似的数据时 要求数据库不管有没有指定天的数据 都要生成该时间节点 可用mysql help topic来解决生此类问题 通过序列和日期函数相结合来满足我们的业务需求 mysql 生成序列 利用 mysql help
  • spark学习2:spark运行基本架构

    各个名词介绍 1 RDD 弹性分布式数据集 2 DAG 有向无环图 反应各RDD之间关系 即把第一个RDD和最后一个RDD 串联起来的关系图 根据DAG 能够找到每个RDD的父RDD 3 executor executor是 驻守在各个工作
  • 三维重建可以考虑光线跟踪的方法

    如题
  • LeetCode 之 剑指 Offer 12. 矩阵中的路径(Java)

    文章目录 LeetCode 之 剑指 Offer 12 矩阵中的路径 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 12 矩阵中的路径 Java 一 题目 剑指 Offer 12 矩阵中的路径 给定一个
  • Nacos搭建集群

    复制三份Nacos服务端文件 配置相同的数据库 参考前面nacos上线文档 修改每一个的application properties文件内的 server port 然后在每个conf文件夹内新增 cluster conf文件 文件内容为
  • python写ecxel。多个条件对Excel中的数据进行筛选并处理

    在第很多行中 D列不空 C列不空 那么A列B列E列F列不空 D列空 C列不空 那么A列B列E列F列空 import pandas as pd def process data filename 读取Excel文件 df pd read ex
  • Android 反编译三种方式

    首先反编译别人的APK 主要是学习别人的实现逻辑 给自己一个思路 比较商业的APK也不会给你留下这个漏洞 一些核心的业务处理会在后台进行操作 本地的 APK 也会进行混淆加密等 好了废话不多说 步入正题 方法一 在线反编译 很简单方便的一个
  • 思科路由器配置

    1 路由表 show IP route 用户模式 特权模式 enable 全局配置模式 configure terminal config 配置主机名称 enable configure terminal config hostname t
  • RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR

    torch backends cudnn benchmark True 加在开头
  • MySQL基础学习(四)——SQL语句之DML语句

    前言 上一篇博客介绍了一下SQL语句中的DDL和DCL语句 主要涉及通过SQL赋予或者撤回相关的用户权限 创建数据表 创建索引等内容 这一篇博客开始总结DML语句 就是我们开发中常用的一些select insert update delet
  • C#常见编程

    1 编写一段程序 运行时向用户提问 你考了多少分 0 100 接受输入后判断其等级并显示出来 判断依据如下 等级 优 90 100分 良 80 89分 中 60 69分 差 0 59分 static void Main string arg
  • 合并两个有序链表(easy)

    将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 示例 1 输入 l1 1 2 4 l2 1 3 4 输出 1 1 2 3 4 4 示例 2 输入 l1 l2 输出 示例 3 输入 l1 l2
  • 【Golang源码学习】chromedp篇

    GitHub https github com chromedp chromedp chromedp go RunResponse 官方注释 func RunResponse ctx context Context actions Acti
  • WKWebView之离线加载以及遇到的问题

    目录 前言 一 离线包是什么 二 方案调研 NSURLProtocol WKURLSchemeHandler 三 具体实施 1 离线包的分发 2 服务器对请求接口处理 3 客户端下载离线包 4 webview设置拦截 5 WKURLSche
  • Typcho反序列化漏洞分析

    Typcho反序列化漏洞分析 文章首发 https xz aliyun com t 9428 影响范围 2017年10月24日之前的所有版本 环境搭建 下载地址 http typecho org 这里主要是说下 在intall之前 需要我们
  • Linux Ubuntu搭建Git服务器

    之前介绍过如何在Windows上搭建Git仓库服务器 不过服务器用的比较多的还是Linux 因为便宜 同一个VPS商一般来说Linux比Windows便宜 没有图形界面 低配置VPS的也可以跑动Linux 开源免费 我感觉比较灵活 下载源也
  • 创建对象的五种方式

    1 使用new关键字 gt 调用构造函数 2 使用Class的newInstance方法 gt 调用构造函数 3 使用Constructor的newInstance方法 gt 调用构造函数 4 使用clone方法 gt 没有调用构造函数 5
  • Oracle中的触发器(trigger)

    1 触发器的定义 数据库触发器是一个与表相关联 存储PL SQL语句的 东西 每当一个特定的数据操作语句 insert update delete 在指定的表上发出时 Oracle自动执行触发器中定义的语句序列 例如 当员工信息插入后 自动
  • java基于winbox 工具下使用 api获取映射表api数据

    Winbox 是基于 windows下远程管理 ROS的软件 提供直观方便的图形界面 用它能登陆路由器 这个路由器是软路由ROUTEOS制作的 用Winbox登陆后 就可以配置路由器了 用这个软件便于配置路由器 Winbox控制台使用TCP