Manual:Tools/Fetch: Difference between revisions
No edit summary |
|||
Line 171: | Line 171: | ||
Of course, you can use Fetch with scripts and fill the above command with variables from the RouterOS GPS menu. | Of course, you can use Fetch with scripts and fill the above command with variables from the RouterOS GPS menu. | ||
==== Adding response to a variable ==== | |||
Since RouterOS v6.43rc64 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 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> | |||
{{cont}} | {{cont}} |
Revision as of 09:03, 24 August 2018
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 or FTP, 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. |
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-content-type (string; Default: application/x-www-form-urlencoded) | the MIME type of the data you are going to send via POST/GET. |
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. |
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-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.
Adding response to a variable
Since RouterOS v6.43rc64 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 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; } } }
[ Top | Back to Content ]