img

Гайд по MikroTik Fetch

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

При написании некоторых скриптов бывает нужно обратиться какому-либо ресурсу. Это может быть HTTP/HTTPS запрос какой-нибудь HTML странички сайта, FTP запрос на скачивание файла или же, это может быть GET/POST запрос к удалённому ресурсу, для передачи на него какой-либо информации.

Для этих целей в роутерах MikroTik предусмотрен инструмент Fetch, о нём и поговорим.

Инструмент Fetch позволяет настроить отправку HTTP и FTP запросов к сетевому ресурсу, чтобы скопировать с, или же загрузить на него определённые данеые (web-страничка, файл). Поддержка HTTPS включена по умолчанию, проверка сертификатов, предъявляемых сетевыми ресурсами при запросе, не осуществляется. Включить проверку цепочки сертификации можно с помощью опции check-certificate.

Чтобы начать работу с инструментом Fetch, введите команду:

/tool fetch

Далее нужно задавать параметры ресурса, к которому Вы хотите обратиться, метод обращения и данные, которые нужно получить или загрузить на этот ресурс.

Доступны следующие параметры:

  • address - задаёт IP адрес ресурса, к которому необходимо обратиться;
  • ascii - включает поддержку ASCII (по умолчанию - no);
  • check-certificate - включает проверку цепочки сертификации удаленного ресурса;
  • dst-path - название файла, который нужно скачать и полный путь к нему на удаленном ресурсе;
  • host - доменное имя ресурса, к которому нужно обратиться. Например - shareit.merionet.ru;
  • http-method - метод HTTP обращения. Доступны следующие методы: get, post, put, delete. По умолчанию используется get;
  • http-data - данные, которые нужно отправить на удаленный ресурс, при использовании методов put и post;
  • http-content-type - идентификатор данных, которые нужно отправить на удаленный ресурс в формате MIME. По умолчанию - application/x-www-form-urlencoded;
  • keep-result - если данный параметр активирован, то будет создан входной файл;
  • mode - задаёт протокол, по которому будет осуществляться соединение с удаленным ресурсом. Можно задать http, https, ftp или tftp;
  • password - задаёт пароль который нужен для аутентификации на удаленном ресурсе. (Используйте только если удаленный ресурс требует аутентификации подключения);
  • port - порт, по которому будет осуществляться соединение;
  • src-path - название файла, который нужно загрузить на удаленный ресурс;
  • upload - если данный параметр активирован, то инструмент fetch будет использоваться именно для загрузки локального файла на удаленный ресурс. При этом требуется, чтобы были указаны src-path и dst-path файла;
  • url - URL путь к файлу. Может быть использовано вместо address или src-path;
  • user - имя пользователя, которое нужно ввести для аутентификации на удаленном ресурсе (используйте только если удаленный ресурс требует аутентификации подключения);

Давайте рассмотрим несколько use кейсов, когда Вам может пригодиться инструмент fetch.


Скачивание файла с удаленного ресурса

В статье про защиту роутера MikroTik методом превентивного блокирования адресов из "черных" списков мы уже прибегали к этому методу.

Для этого мы писали такую команду:

/tool fetch address=www.squidblacklist.org host=www.squidblacklist.org mode=http src-path=/downloads/drop.malicious.rsc

В данном случае, мы обращаемся к ресурсу www.squidblacklist.org по протоколу http и скачиваем файл /downloads/drop.malicious.rsc

Допустим, мы имеем дело с FTP сервером, требующим аутентификации, тогда запрос может быть таким:

/tool fetch address=192.168.11.48 src-path=conf.rsc  user=admin mode=ftp password=samplepass dst-path=sample.rsc port=21  host="" keep-result=yes

Можно также указать URL, по которому доступен нужный файл для скачивания:

/tool fetch url="https://wiki.merionet.ru/rukovodstvo-administratora-freepbx-na-russkom-yazyke/Rukovodstvo_Administratora_FreePBX_na_russkom_yazyke.pdf" mode=http

Загрузка файлов на удаленный сервер может быть нужна для автоматизации процесса резервного копирования конфигурации роутера

Ниже приведен пример команды для отправки файла с бэкапом по протоколу FTP, на удаленный сервер по адресу 192.168.11.56, который требует аутентификации:

/tool> fetch address=192.168.11.56 src-path=cnfig.rsc  user=admin mode=ftp password=samplepass dst-path=backup.rsc upload=yes

Отправление информации на удаленный сервер

С помощью инструмента fetch можно также отправлять информацию на удаленный сервер, используя HTTP запросы. Например, ниже показан пример того, как можно через POST запрос отправить json массив данных на удаленный сервер:

/tool fetch http-method=post http-content-type="application/json" http-data="{ "as": "AS16509 Amazon.com, Inc.", "city": "Boardman", "country": "United States", "countryCode": "US", "isp": "Amazon", "lat": 45.8696, "lon": -119.688, "org": "Amazon", "query": "54.148.84.95", "region": "OR", "regionName": "Oregon", "status": "success", "timezone": "America/Los_Angeles", "zip": "97818" }" url="http://locator.loc/index.php"

Сохранять результат как переменную

В версии RouterOS v6.43, появилась возможность сохранить результат команды fetch в переменную. Это может быть полезно, например, для написания скриптов, которые производят какие-либо действия в зависимости от того, какой был ответ на HTTP запрос.

Например, ниже приведен пример скрипта, который отсылает письмо SERVICE FAILED, если при запросе страницы PHP (check.php) возвратился “0” и SERVICE RUNNING, если запрос был успешно обработан.

{  :local result [/tool fetch url=http://192.168.11.56/check.php as-value output=user];  :if ($result->"status" = "finished") do={  :if ($result->"data" = "0") do={ /tool e-mail send to="mnadmin@mndomain.ru" subject="$[/system identity get name] export"  body="$[/system clock get date] SERVICE FAILED; } else={ /tool e-mail send to="mnadmin@mndomain.ru" subject="$[/system identity get name] export"  body="$[/system clock get date] SERVICE RUNNING; } } }
Предварительно, нужно чтобы был настроен почтовый сервер - tool e-mail> set server=192.168.1.34 set port=25 from=”mnmikrotik@mndomain.ru”

Кстати, в WinBox нет отдельной реализации инструмента fetch. Однако, мы можем использовать его, когда пишем скрипты через инструмент Scripts. Например, можно туда добавить скрипт, который мы привели выше:

Инструмент Scripts
Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Сети
Скидка 25%
Основы сетевых технологий
Стань сетевиком с нуля за 2 месяца. Веселая и дружелюбная подача информации с эмуляцией реальных задач.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
В начале 2000-х, когда идея мессенджеров только формировалась, расширяемый протокол обмена сообщениями и информацией о присутств
img
Задержка в сети, или сетевая задержка, - это временная задержка при передаче запросов или данных от источника к адресату в сетев
img
Система доменных имен (DNS – Domain Name System) обеспечивает сетевую коммуникацию. DNS может показаться какой-то невидимой сило
img
Wi-Fi это технология, которая использует радиоволны для отправки и получения сигналов от находящихся поблизости устройств, чтобы
img
BGP (Border Gateway Protocol) - это протокол граничного шлюза, предназначенный для обмена информацией о маршрутизации и доступно
img
Когда читаете данную статью, браузер подключается к провайдеру (или ISP) а пакеты, отправленные с компьютера, находят путь до се
21 ноября
20:00
Бесплатный вебинар
Введение в Docker