—просите про Asterisk в Telegram - чате

ћерион Ќетворкс

5 минут чтени€

ѕри написании некоторых скриптов бывает нужно обратитьс€ какому-либо ресурсу. Ёто может быть 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

ѕолезна ли ¬ам эта стать€?


Ёти статьи могут быть вам интересны: