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

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("其他");

    }


}

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

喜欢记得一键三连。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨互联网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值