脚本-mikrotik ROS使用/tool fetch定期从公网http下载更新文件到本地ROS files

MikroTik系统中的/tool fetch是一个用于下载文件或发送HTTP请求的命令,功能类似于其他系统中的curlwget工具。它是MikroTik系统中实现自动化网络任务的重要工具之一,比如下载文件、获取数据、发送API请求等。

功能

  1. 文件下载
    • 从HTTP、HTTPS、FTP等协议的服务器下载文件到设备。
  2. 发送HTTP请求
    • 支持GET和POST请求,可以用于与REST API或动态DNS服务交互。
  3. 用户验证
    • 支持Basic Authentication方式,适用于需要登录的资源访问。
  4. 代理支持
    • 可以通过代理服务器发送请求。

常用选项

以下是/tool fetch中常用的参数和其作用:

参数作用
url请求的完整URL地址,例如http://example.com/file.txt
mode请求模式:http(默认)、ftphttps等。
dst-path下载文件后保存的路径,例如/file.txt,默认保存在设备的文件系统中。
user用于验证的用户名,例如admin(适用于需要认证的请求)。
password用于验证的密码。
http-methodHTTP方法:get(默认)或post,用来指定请求类型。
http-header自定义HTTP头信息,例如Content-Type: application/json(可选)。
post-dataPOST请求的内容,用于发送JSON或表单数据。
keep-result是否保留结果:yes会在global变量中返回结果,no不会保留(默认:no)。
proxy指定HTTP或HTTPS代理地址,例如192.168.1.1:8080
check-certificate验证HTTPS证书:yes(默认)会验证,no跳过验证(仅HTTPS)。

常见用法

1. 下载文件

从指定URL下载文件并保存到设备的文件系统:

/tool fetch url="http://example.com/file.txt" dst-path="file.txt"

下载完成后,文件会存储在MikroTik的文件列表中,可以通过/file print查看。

2. HTTP GET 请求

向某个服务器发送GET请求并输出结果:

/tool fetch url="http://example.com/api/status" keep-result=yes
:put $"result"
  • keep-result=yes:结果会保存在变量result中,脚本中可通过:put查看。

3. HTTP POST 请求

发送POST请求,附加自定义数据(如JSON):

/tool fetch url="http://example.com/api/update" http-method=post \
    http-header="Content-Type: application/json" \
    post-data="{\"key\":\"value\"}" keep-result=yes
:put $"result"

4. 带身份验证的请求

访问需要用户名和密码验证的资源:

/tool fetch url="http://example.com/private/data" user="username" password="password" dst-path="data.json"

5. 使用代理服务器

通过代理发送请求:

/tool fetch url="http://example.com/file.txt" proxy=192.168.1.1:8080

6. 不验证HTTPS证书

如果服务器使用了自签名证书或不需要验证证书:

/tool fetch url="https://example.com/api" check-certificate=no

返回值与状态检查

/tool fetch执行后,可以通过以下方式检查执行状态:

  • 文件下载完成:文件会显示在/file print中。
  • 结果返回到变量:当keep-result=yes时,结果会保存在变量result中。
  • 检查状态:if ($"status" != "finished") do={ :put "Fetch failed: $status" }

使用场景

  1. 动态域名更新: 使用/tool fetch向动态DNS服务提供商更新IP地址。
  2. 自动化备份: 定期下载或上传配置文件到远程服务器。
  3. 监控与报警: 获取远程API的状态信息并通过MikroTik脚本处理。
  4. 数据同步: 从外部服务器获取配置文件、脚本或规则更新。

注意事项

  1. HTTPS兼容性: MikroTik需要支持加密模块(如ssl包)来处理HTTPS请求。
  2. 文件路径: 保存文件时,请确保设备的存储空间足够,尤其是高频率下载时。
  3. 安全性: 避免在脚本中硬编码敏感信息(如用户名和密码),可以通过加密方式存储或限制权限。

通过合理配置,/tool fetch可以显著增强MikroTik设备的功能和灵活性!