前言
在使用 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 系统中的 curl
或 wget
。
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 更新或和第三方服务联动,可以进一步扩展脚本逻辑。
五、注意事项
- 某些 RouterOS 版本对 HTTPS 证书校验不完善,必要时可换用 HTTP 版本接口;
- 接口频繁调用可能会被限流,建议添加缓存机制;
- 建议将命令放入
/system scheduler
中定时执行,或通过脚本结合其他触发器使用; 接口不稳定时也可以换用其他公共 IP 查询接口,例如:
http://myip.ipip.net
https://ifconfig.co/ip
六、常见应用场景
- 自动更新公网 IP 到 DDNS 服务
- 动态推送 IP 到 Telegram/邮件
- 定时记录公网 IP 到本地日志
- 实现多拨动态识别和出口判断
如果您有多出口路由、多拨需求、科学上网策略分流,或希望自动推送 IP 变动,我还可以为您定制完整解决方案(RouterOS + WireGuard + DDNS + BGP),欢迎留言探讨!