前言

在使用 MikroTik 路由器进行自动化运维时,经常会用到 /tool fetch 命令获取外部数据,例如查询公网 IP。本篇文章将详细解释这条命令的各项参数含义及实际应用场景。

先看例子

执行命令

tool/fetch url="https://api.ip.sb/ip" output=user

如下所示:

[admin@MikroTik] > tool/fetch url="https://api.ip.sb/ip" output=user
      status: finished      
  downloaded: 0KiB          
    duration: 0s            
        data: 103.211.71.2n
[admin@MikroTik] > 

以下是详解,请各位看官仔细阅读,为什么用这个命令,以及这个命令的用途!

MikroTik RouterOS 命令详解:

/tool fetch url="https://api.ip.sb/ip" output=user


一、命令说明

/tool fetch url="https://api.ip.sb/ip" output=user

这条命令的作用是:访问 https://api.ip.sb/ip 接口,并将返回的数据输出到终端用户界面,通常用于获取当前路由器所使用的公网 IP 地址。


二、参数详解

/tool fetch

RouterOS 内建的“抓取工具”,用于从指定 URL 下载数据,类似 Linux 系统中的 curlwget


url="https://api.ip.sb/ip"

指定要请求的接口地址。https://api.ip.sb/ip 是一个公开的 IP 查询接口,返回内容如:

183.130.216.28

output=user

决定请求返回的数据存放方式,RouterOS 支持的选项如下:

参数值含义
file将结果保存为文件(需配合 dst-path 使用)
none请求发出后直接丢弃响应,不保存任何内容
user输出到用户当前登录的终端界面,适合脚本读取变量
ftp(旧版本)保存到 FTP 服务器上

三、实战脚本:获取公网 IP 并打印

:local ipinfo
/tool fetch url="https://api.ip.sb/ip" output=user as-value -> $ipinfo
:put ("当前公网 IP 是: " . ($ipinfo->"data"))

脚本说明:

  • as-value:以结构化方式返回数据(key-value 格式);
  • $ipinfo:包含字段 data,即公网 IP;
  • :put:打印结果到终端,可在 Scheduler 或脚本中查看。

四、进阶用法:写入变量并记录日志

:local wanip [/tool fetch url="https://api.ip.sb/ip" output=user as-value]->"data"
:log info ("当前公网 IP 是:$wanip")

如果您希望使用该 IP 做 DDNS 更新或和第三方服务联动,可以进一步扩展脚本逻辑。


五、注意事项

  1. 某些 RouterOS 版本对 HTTPS 证书校验不完善,必要时可换用 HTTP 版本接口;
  2. 接口频繁调用可能会被限流,建议添加缓存机制;
  3. 建议将命令放入 /system scheduler 中定时执行,或通过脚本结合其他触发器使用;
  4. 接口不稳定时也可以换用其他公共 IP 查询接口,例如:

    • http://myip.ipip.net
    • https://ifconfig.co/ip

六、常见应用场景

  • 自动更新公网 IP 到 DDNS 服务
  • 动态推送 IP 到 Telegram/邮件
  • 定时记录公网 IP 到本地日志
  • 实现多拨动态识别和出口判断

如果您有多出口路由、多拨需求、科学上网策略分流,或希望自动推送 IP 变动,我还可以为您定制完整解决方案(RouterOS + WireGuard + DDNS + BGP),欢迎留言探讨!


最后修改:2025 年 05 月 27 日
赞赏必须赞赏,多多益善,老板一直发大财!