/tool/fetch
fetch
Download and upload files and make HTTP requests from the console or scripts. See the Fetch guide.
tool/fetch
Type: Command
从控制台或脚本下载和上传文件以及发出 HTTP 请求。参见 Fetch 指南。
| 参数 | 类型 | 描述 |
|---|---|---|
url | string | 资源的完整 URL,例如 https://download.mikrotik.com/routeros/7.19/CHANGELOG 或 ftp://user:password@192.168.88.2/conf.rsc。协议方案选择模式,ftp/sftp URL 可以携带凭据。可以替代单独的 address 和 src-path 参数。不能在 URL 中指定 VRF:在 http://192.168.88.2@vrf1/ 中,@ 后的部分被视为主机名。请使用 address 参数指定 VRF。 |
output | enum (none | file | user | user-with-headers) | 决定获取的数据存储在哪里。 - none - 不存储下载的数据。 - file(默认)- 将下载的数据存储在文件中(dst-path;使用 url 且没有 dst-path 时,文件以 URL 路径的最后部分命名)。 - user - 将下载的数据存储在 as-value 的 data 值中,最多 64512 字节(63 KiB);更长的正文会被截断而不报错。 - user-with-headers - 将下载的数据存储在 data 中(最多 20480 字节,20 KiB),并将响应头存储在 http-headers 中(最多 44 KB)。 |
http-method | enum (get | post | put | delete | head | patch) | 请求的 HTTP 方法。不带 http-data 的 PUT 和 PATCH 发送空正文。 - get(默认)- 请求资源。 - post - 将 http-data 发送到资源。 - put - 将 http-data 作为资源的新内容发送。 - delete - 删除资源。 - head - 仅请求响应头。 - patch - 将 http-data 作为资源的部分更改发送。 |
http-auth-scheme | enum (basic | digest) | user 和 password 的 HTTP 身份验证方案。使用 basic 时,凭据随第一个请求发送,无需等待质询。默认值:basic。 |
http-data | string | POST、PUT 和 PATCH 的请求正文。最大数据限制为 64 KB。如果 http-header-field 中没有 Content-Type,正文以 application/x-www-form-urlencoded 发送。 |
http-header-field | multi { array-id, header-field: string } | HTTP header fields and values, in the form of "h1:fff,h2:yyy": a comma starts the next header. To keep a comma inside one header value, escape it with two backslashes, e.g. "h:fff\,yyy" sends h: fff,yyy. Fetch always sends User-Agent: RouterOS <version> and Accept-Encoding: deflate, gzip. |
check-certificate | enum (no | yes | yes-without-crl) | HTTPS 的 TLS 证书验证。 - no(默认)- 不验证:fetch 甚至可连接到证书已过期或自签名的服务器。 - yes - 对照本地证书存储验证信任链,其中包括包含公共根证书的内置信任存储。无效证书会使获取失败,例如 failure: SSL: ssl: cert not valid (after: ... < now: ...)。 - yes-without-crl - 在不进行 CRL 检查的情况下验证证书。 |
certificate | enum | HTTPS 模式下用于服务器验证的证书存储中的证书。仅在启用 check-certificate 时适用。 |
address | alt { address: address (flags=46vi) , address: ipAddr } | 目标设备的 IP 地址或主机名。附加 @vrf_name 以在特定 VRF 内运行获取操作,或仅设置 address=@vrf_name 并让 url 参数提供地址。 |
src-address | alt { ip: ipAddr , ip6: ip6Addr } | 用于建立连接的源 IP 地址。仅适用于 HTTP、HTTPS 和 SFTP 模式。 |
port | num | 用于连接的端口。默认值:模式对应的端口(http 为 80,https 为 443,ftp 为 21,sftp 为 22,tftp 为 69),或 url 中给出的端口。 |
mode | enum (http | https | ftp | tftp | sftp) | 用于连接的协议。使用 url 时,协议来自 URL 方案。 - http(默认)- HTTP。 - https - 基于 TLS 的 HTTP。 - ftp - FTP;下载和上传。 - tftp - TFTP;从 TFTP 服务器下载,例如另一台路由器上的 /ip/tftp。 - sftp - 基于 SSH 的 SFTP;下载和上传。 |
http-content-encoding | enum (deflate | gzip) | 使用 gzip 或 deflate 压缩 http-data,并添加匹配的 Content-Encoding 头。仅适用于 POST 和 PUT 方法。 |
ip-type | enum (any | ipv4 | ipv6) | 解析域名时的 IP 协议族偏好。 - any(默认)- 使用 IPv4 或 IPv6。 - ipv4 - 仅使用 IPv4。 - ipv6 - 仅使用 IPv6。 |
src-path | file | 远程文件的路径;使用 upload=yes 时,为要上传的本地文件。 |
dst-path | file | 获取的文件保存到的目标路径;使用 upload=yes 时,为远程设备上的文件名。没有 dst-path 时,下载文件以 URL 路径的最后部分命名。 |
user | string | 用于在远程设备上进行身份验证的用户名。没有 user 时,FTP 以 anonymous 登录,HTTP 不发送凭据。 |
password | string | user 的密码。有 user 但没有 password 时,HTTP 发送空密码。 |
host | string | 远程 Web 服务器的主机名或虚拟主机名。当同一 IP 服务多个虚拟主机时很有用。例如 address=manual.mikrotik.com host=forum.mikrotik.com。 |
ascii | bool | 为 FTP/TFTP 传输启用 ASCII 模式。默认值:no。 |
upload | bool | 为 FTP 和 SFTP 传输启用上传模式:src-path 是本地文件,dst-path(或 url 中的路径)是远程设备上的名称。不支持 HTTP 上传;请使用带 http-data 的 http-method=put。默认值:no。 |
sftp-known-hosts-ignore | bool | 为此 SFTP 传输跳过 SSH 主机密钥验证。当 /ip/ssh 中启用了 known-hosts-validation 时有效;未启用验证时,接受任何主机密钥。默认值:no。 |
keep-result | bool | 已弃用,请改用 output 参数。 |
idle-timeout | alt { idle-timeout: time [1 .. 604800] , idle-timeout: enum (none) { none:0 } } | 自上次读/写操作以来的空闲超时。默认值:10s。 |
http-max-redirect-count | num | fetch 跟随的 HTTP 重定向最大数量。默认值为 2 时,会跟随两次重定向链,第三次重定向会以收到的 3xx 状态使获取失败。默认值:2。 |
http-percent-encoding | bool | 对请求路径中除字母数字和 -._~/?^=: 外的每个字符进行百分号编码。默认值:no。 |
http-version | enum (http1_1 | http2 | http2-forced) | HTTP 协议版本。HTTP2 仅在 ARM64 和 x86/CHR 设备上支持。默认值:http1_1。 |
| 只读参数 | 类型 | 描述 |
|---|---|---|
status | enum (none | connecting | requesting | downloading | uploading | finished | failed) | 获取操作的当前状态。 |
code | num | 服务器返回的 HTTP 状态代码。 |
downloaded | num | 下载量,单位为 KiB,向下取整,数据到达时至少为 1(7 字节和 2047 字节都显示 1)。使用 output=user 时,为存储在 data 中的量;将 [:len ($r->"data")] 与限制比较以检测正文是否被截断。 |
uploaded | num | 上传量,单位为 KiB,向下取整。 |
total | num | 传输的总大小,单位为 KiB,向下取整。 |
duration | time | 获取操作的总持续时间。 |
data | string | output 为 user(最多 64512 字节)或 user-with-headers(最多 20480 字节)时获取的数据。更长的正文会被截断而不报错。 |
http-headers | object { http-header: super { key: string , [value] : string } } | 服务器返回的 HTTP 头。 |