Manual:Tools/Fetch: Difference between revisions
added upload |
No edit summary |
||
(19 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{Versions| | {{Versions|v6 +}} | ||
__TOC__ | __TOC__ | ||
==Summary== | ==Summary== | ||
Line 8: | Line 7: | ||
<br /> | <br /> | ||
<b>Standards:</b> <code></code></p> | <b>Standards:</b> <code></code></p> | ||
Fetch is one of the console tools in Mikrotik RouterOS. It is used to copy files from | 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 sent POST/GET requests and send any kind of data to a remote server. | ||
HTTPS protocol is supported; by default no certificate checks are made, but setting '''check-certificate''' to ''yes'' enables trust chain validation from local certificate store. | |||
==Properties== | ==Properties== | ||
Line 27: | Line 23: | ||
|default= | |default= | ||
|desc=IP address of the device to copy file from. | |desc=IP address of the device to copy file from. | ||
}} | |||
{{Mr-arg-table | |||
|arg=as-value | |||
|type=set {{!}} not-set | |||
|default=not-set | |||
|desc=Store the output in a variable, should be used with the <var>output</var> property. | |||
}} | }} | ||
Line 34: | Line 37: | ||
|default=no | |default=no | ||
|desc= | |desc= | ||
}} | |||
{{Mr-arg-table | |||
|arg=check-certificate | |||
|type=yes {{!}} no | |||
|default=no | |||
|desc=Enables trust chain validation from local certificate store. | |||
}} | }} | ||
Line 50: | Line 60: | ||
<pre>address=wiki.mikrotik.com host=forum.mikrotik.com</pre> | <pre>address=wiki.mikrotik.com host=forum.mikrotik.com</pre> | ||
In this example the resolved ip address is the same (66.228.113.27), but hosts are different. | In this example the resolved ip address is the same (66.228.113.27), but hosts are different. | ||
}} | |||
{{Mr-arg-table | |||
|arg=http-method | |||
|type={{!}}delete{{!}}get{{!}}post{{!}}put | |||
|default=get | |||
|desc=the HTTP method to use | |||
}} | |||
{{Mr-arg-table | |||
|arg=http-data | |||
|type=string | |||
|default= | |||
|desc=the data, that is going to be send, when using PUT or POST methods | |||
}} | |||
{{Mr-arg-table | |||
|arg=http-header-field | |||
|type=string | |||
|default=*empty* | |||
|desc=list of all header fields and their values, in the form of <code>http-header-field=h1:fff,h2:yyy</code> | |||
}} | }} | ||
Line 61: | Line 92: | ||
{{Mr-arg-table | {{Mr-arg-table | ||
|arg=mode | |arg=mode | ||
|type=ftp{{!}}http{{!}}tftp | |type=ftp{{!}}http{{!}}tftp {!} https | ||
|default=http | |default=http | ||
|desc=Choose the protocol of connection - http, ftp or tftp. | |desc=Choose the protocol of connection - http, https , ftp or tftp. | ||
}} | }} | ||
{{Mr-arg-table | |||
|arg=output | |||
|type=none{{!}}file{{!}}user | |||
|default=file | |||
|desc=Sets where to store the downloaded data. | |||
* <code>none</code> - do not store downloaded data | |||
* <code>file</code> - store downloaded data in a file | |||
* <code>user</code> - store downloaded data in the <var>data</var> variable | |||
}} | |||
{{Mr-arg-table | {{Mr-arg-table | ||
Line 108: | Line 151: | ||
}} | }} | ||
==Examples== | |||
The following example shows how to copy the file with filename "conf.rsc" from 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. | ==== Downloading files to the router ==== | ||
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. | |||
<pre> | <pre> | ||
[admin@mt-test] /tool> fetch address=192.168.88.2 src-path=conf.rsc \ | [admin@mt-test] /tool> fetch address=192.168.88.2 src-path=conf.rsc \ | ||
Line 123: | Line 169: | ||
Another example that demonstrates the usage of <var>url</var> property. | Another file download example that demonstrates the usage of <var>url</var> property. | ||
<pre> | <pre> | ||
[admin@test_host] /> /tool fetch url="http://www.mikrotik.com/img/netaddresses2.pdf" mode=http | [admin@test_host] /> /tool fetch url="http://www.mikrotik.com/img/netaddresses2.pdf" mode=http | ||
Line 132: | Line 178: | ||
... | ... | ||
5 netaddresses2.pdf .pdf file 11547 jun/01/2010 11:59:51 | 5 netaddresses2.pdf .pdf file 11547 jun/01/2010 11:59:51 | ||
</pre> | |||
==== Sending information to a remote host ==== | |||
It is possible to use HTTP POST request to send information to a remote server, that is prepared to accept it. In the following example, we send geographic coordinates to a PHP page: | |||
<pre> | |||
/tool fetch http-method=post http-header-field="Content-Type: application/json" http-data="{\"lat\":\"56.12\",\"lon\":\"25.12\"}" url="http://testserver.lv/index.php" | |||
</pre> | |||
Of course, you can use Fetch with scripts and fill the above command with variables from the RouterOS GPS menu. | |||
==== Return value to a variable ==== | |||
Since RouterOS v6.43 it is possible to save the result of fetch command to a variable. For example, it is possible to trigger a certain action based on the result that a HTTP page returns. You can find a very simple example below that disables '''ether2''' whenever a PHP page returns "0": | |||
<pre> | |||
{ | |||
:local result [/tool fetch url=http://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; | |||
} | |||
} | |||
} | |||
</pre> | |||
==== SFTP ==== | |||
Since 6.45beta50 <code>/tool fetch</code> support SFTP (SSH File Transfer Protocol) protocol. | |||
<pre> | |||
[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] | |||
</pre> | </pre> |
Latest revision as of 13:26, 21 January 2021
Applies to RouterOS: v6 +
Summary
Sub-menu: /tool fetch
Standards:
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 sent POST/GET requests and send any kind of data to a remote server. HTTPS protocol is supported; by default no certificate checks are made, but setting check-certificate to yes enables trust chain validation from 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) | |
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: ) | Domain name or virtual domain name (if used on web-site, from which you want to copy information). For example,
address=wiki.mikrotik.com host=forum.mikrotik.comIn 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 send, 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 file to 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. |
Examples
Downloading files to the router
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.
[admin@mt-test] /tool> fetch address=192.168.88.2 src-path=conf.rsc \ user=admin mode=ftp password=123 dst-path=123.rsc port=21 \ host="" keep-result=yes
Example to upload file to other router:
[admin@mt-test] /tool> fetch address=192.168.88.2 src-path=conf.rsc \ user=admin mode=ftp password=123 dst-path=123.rsc upload=yes
Another file download example that demonstrates the usage of url property.
[admin@test_host] /> /tool fetch url="http://www.mikrotik.com/img/netaddresses2.pdf" mode=http status: finished [admin@test_host] /> /file print # NAME TYPE SIZE CREATION-TIME ... 5 netaddresses2.pdf .pdf file 11547 jun/01/2010 11:59:51
Sending information to a remote host
It is possible to use HTTP POST request to send information to a remote server, that is prepared to accept it. In the following example, we send geographic coordinates to a PHP page:
/tool fetch http-method=post http-header-field="Content-Type: application/json" http-data="{\"lat\":\"56.12\",\"lon\":\"25.12\"}" url="http://testserver.lv/index.php"
Of course, you can use Fetch with scripts and fill the above command with variables from the RouterOS GPS menu.
Return value to a variable
Since RouterOS v6.43 it is possible to save the result of fetch command to a variable. For example, it is possible to trigger a certain action based on the result that a HTTP page returns. You can find a very simple example below that disables ether2 whenever a PHP page returns "0":
{ :local result [/tool fetch url=http://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.
[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]
[ Top | Back to Content ]