Manual:Tools/Fetch: Difference between revisions

From MikroTik Wiki
Jump to navigation Jump to search
No edit summary
 
(18 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Versions|v3, v4 +}}
{{Versions|v6 +}}


__TOC__
__TOC__
<div class=manual>


==Summary==
==Summary==
Line 8: Line 7:
<br />
<br />
<b>Standards:</b> <code></code></p>
<b>Standards:</b> <code></code></p>
<br />
<p>


Fetch is one of the console tools in Mikrotik RouterOS. It is used to copy files from any network device to a Mikrotik router via HTTP or FTP.
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.
In latest v5 versions it is possible also to upload files to remote locations.


==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==


==Examples==
==== Downloading files to the router ====  


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.  
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 125: 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 134: 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.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 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.
  • none - do not store downloaded data
  • file - store downloaded data in a file
  • user - store downloaded data in the data variable
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 ]