Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added "patch" http-method

...

Fetch is one of the console tools in Mikrotik MikroTik RouterOS. It is used to copy files to/from a network device via HTTP, HTTPS, FTP or SFTP (Support for SFTP added on v6.45), it . It can also be used to send POST/GET requests and send any kind of data to a remote server. The HTTPS protocol is supported; In HTTPS mode by default, no certificate checks are made, but setting check-certificate to yes enables trust chain validation from the local certificate store (can be used only in HTTPS mode).

Properties

PropertyDescription
address (string; Default: )IP address of the device to copy file from.
as-value (set | not-set; Default: not-set)Store the output in a variable, should be used with the output property.
ascii (yes | no; Default: no)Can be used with FTP and TFTP
certificate (string; Default: )

Certificate that should be used for host verification. Can be used only in HTTPS mode.

check-certificate (yes | yes-without-crl | no; Default: no)

Enables trust chain validation from local certificate store. yes-without-crl, validates

the

a certificate, not performing CRL check (certificate revocation list).  Can be used only in HTTPS mode.

dst-path (string; Default: )Destination filename and path.
duration (time; Default: )

Time how long fetch should run.

host (string; Default: )

A domain name or virtual domain name (if used on a website, from which you want to copy information). For example,

address=wiki.mikrotik.com host=forum.mikrotik.com

In this example the resolved ip address is the same (66.228.113.27), but hosts are different.
http-auth-scheme (basic|digest; Default: basic)HTTP authentication scheme

http-method (

|

delete|get|head|post|put|patch; Default: get)

the
HTTP method to use
http-data (string; Default: )
the
The data, that is going to be sent, when using PUT or POST methods. Data limit is 64Kb.
http-header-field (string; Default: *empty*)
list
List of all header fields and their values, in the form of http-header-field=h1:fff,h2:yyy
http-content-encoding (deflate|gzip; Default: *empty*)Encodes the payload using gzip or deflate compression and adds a corresponding Content-Encoding header. Usable for HTTP POST and PUT only.
keep-result (yes | no; Default: yes)If yes, creates an input file.
mode (ftp|http|https|sftp|tftp
{!} https
; Default: http)Choose the protocol of connection - http, https , ftp, sftp or tftp.
output (none|file|user|user-with-headers; Default: file)Sets where to store the downloaded data.
  • none - do not store downloaded data
  • file - store downloaded data in a file
  • user - store downloaded data in the data variable (variable limit is 64Kb)
  • user-with-headers - store downloaded data and headers in the data variable (variable limit is 64Kb (20Kb for downloaded data, 44Kb for headers))
password (string; Default: anonymous)Password, which is needed for authentication to the remote device.
port (integer; Default: )Connection port.
src-address (ip address; Default: )Source address that is used to establish connection. Can be used only HTTP/S and SFTP modes.
src-path (string; Default: )Title of the remote file you need to copy.
upload (yes | no; Default: no)Only (S)FTP modes support
uploads
upload. If enabled then fetch will be used to upload files to a remote server.
Requires
Requires src-path and dst-path parameters to be set.
url (string; Default: )URL pointing to file. Can be used instead of address and src-path parameters.
user (string; Default: anonymous)
User name
Username, which is needed for authentication to the remote device.


Configuration Examples

The following example shows how to copy the file with filename "conf.rsc" from a device with ip address 192.168.88.2 by FTP protocol and save it as file with filename "123.rsc". User and password are needed to login into the device.

...

In this example, the data is uploaded as a file. Important note, since the file variable data comes from a variablefile, it a file can only be in size up to 4KB. This is a limitation of RouterOS variables.

...

Code Block
languageros
{
    :local result [/tool fetch url=https://10.0.0.1/disable_ether2.php as-value output=user];
    :if ($result->"status" = "finished") do={
        :if ($result->"data" = "0") do={
            /interface ethernet set ether2 disabled=yes;
        } else={
            /interface ethernet set ether2 disabled=no;
        }
    }
}

SFTP

Since 6.45beta50 /tool fetch support SFTP (SSH File Transfer Protocol) protocol:

Code Block
languageros
[admin@MikroTik] > /tool fetch url="sftp://10.155.126.200/home/x86/Desktop/50MB.zip" user=x86 password=root dst-path=disk1
      status: downloading
  downloaded: 1048KiB
       total: 51200KiB
    duration: 6s
-- [Q quit|D dump|C-z pause]