...
Fetch is one of the console tools in Mikrotik RouterOS. It is used to copy files to/from a network device via HTTP, FTP or SFTP (Support for SFTP added on v6.45), 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; by default, no certificate checks are made, but setting check-certificate to yes enables trust chain validation from the local certificate store.
Properties
Property | Description |
---|---|
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 |
check-certificate (yes | no; Default: no) | Enables trust chain validation from local certificate store. |
dst-path (string; Default: ) | Destination filename and path |
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-method (|delete|get|post|put; Default: get) | the HTTP method to use |
http-data (string; Default: ) | the data, that is going to be sent, when using PUT or POST methods |
http-header-field (string; Default: *empty*) | list of all header fields and their values, in the form of http-header-field=h1:fff,h2:yyy |
keep-result (yes | no; Default: yes) | If yes, creates an input file. |
mode (ftp|http|tftp {!} https; Default: http) | Choose the protocol of connection - http, https , ftp or tftp. |
output (none|file|user; Default: file) | Sets where to store the downloaded data.
|
password (string; Default: anonymous) | Password, which is needed for authentication to the remote device. |
port (integer; Default: ) | Connection port. |
src-path (string; Default: ) | Title of the remote file you need to copy. |
upload (yes | no; Default: no) | If enabled then fetch will be used to upload files to a remote server. 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, 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.
...
Code Block | ||
---|---|---|
| ||
/tool fetch http-method=post http-content-type="application/json" http-data="{\"lat\":\"56.12\",\"lon\":\"25.12\"}" url="https://testserver.lv/index.php" |
...
In this example, the data is uploaded as a file. Important note, since the file comes from a variable, it can only be in size up to 4KB. This is a limitation of RouterOS variables.
Code Block | ||
---|---|---|
| ||
/export file=export.rsc
:global data [/file get [/file find name=export.rsc] contents];
:global $url "https://prod-51.westeurope.logic.azure.com:443/workflows/blabla/triggers/manual/paths/invoke....";
/tool fetch mode=https http-method=put http-data=$data url=$url |
Return value to a variable
Since RouterOS v6.43 it It is possible to save the result of the fetch command to a variable. For example, it is possible to trigger a certain action based on the result that an HTTP page returns. You can find a very simple example below that disables ether2 whenever a PHP page returns "0":
...