По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
При написании некоторых скриптов бывает нужно обратиться какому-либо ресурсу. Это может быть 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. Например, можно туда добавить скрипт, который мы привели выше:
Привет! В голливудских фильмах про хакеров, ты наверняка видел как герой сидит перед компом, быстро набирая команды на клавиатуре. На черном экране бегут зеленые буквы, появляется надпись “HACKED!” и в результате у него получается за считанные секунды, обойти все системы защиты, открыть хранилище банка или и вовсе запустить ядерную боеголовку.
Ты можешь подумать, что в современном мире, где царит удобство, почти у всего есть приложение и графический интерфейс ввод команд в черный экран - это прошлый век. Но спешим тебя разубедить! Сетевой инженер, администратор, специалист по информационной безопасности и конечно же хакер точно также сидит перед компом и вбивает на клавиатуре команды, чтобы выполнить определенные задачи. Сейчас мы объясним, что это за черный экран такой и как с помощью него человек может взаимодействовать с сетевым устройством.
Когда компьюстеры только появлялись, у них не было ни дисплеев, ни клавиатуры, ни тем более мыши. Но их надо было как-то настраивать и заставлять их складывать большие числа, которые самому было складывать лень. Нужно было некое устройство, с помощью которого человек мог бы взаимодействовать с компьютером. Такое устройство - прослойку принято называть терминалом.
Видео: SSH/Telnet/Терминал/Консоль
Заценили ролик? Продолжаем.
На первых порах ими стали телетайпы. Это такие печатные машинки, которые соединяются по электрическому каналу для отправки и получения текстовых сообщений на простом листе бумаги. Да-да, раньше этим хакерским черным экраном был простой лист с командами! Это было дико неудобно и медленно, но идея ввода и вывода информации построчно затем легла в основу будущих интерфейсов.
Позднее, посредством электронно-лучевой трубки, строку для ввода команд вывели на экран и плюс-минус в таком виде она добралась до наших дней. Таким образом, мы теперь вбиваем команды не на печатной машинке, а на клавиатуре и видим эти команды не на листе бумаги, а на мега тонком UltraHD мониторе, но модель взаимодействия осталась такой же как и 60 лет назад.
Вообще совокупность устройств для взаимодействия с человека и компьютера называют консолью. Это может быть клавиатура, мышь, монитор, дисплей, микрофон, джойстик, но с одной оговорочкой. Всё это должно быть подключено непосредственно к компу и ты должен находиться прямо перед ним.
А вот если ты сидишь в удобном отремонтированном кабинете с кондиционером и через промежуточное устройство подключаешься к серверу, который стоит в подвале здания, то это уже терминал. Улавливаешь суть? Консоль - это когда ты сидишь прямо перед устройством и юзаешь перефирию подключенную прямо к нему. Терминал - это когда ты через что-то ещё (зачастую удаленно) подключаешься к консоли взаимодействуешь с ней.
Супер, разобрались. Ну и что, можно взаимодействовать с компами только если за ними сидеть или через какой-то промежуточный девайс? Конечно нет!
Для этого был придуман протокол Telnet (телетайп нетворк).
С помощью него можно удаленно по сети подключиться к сетевому устройству и заниматься его администрированием. По умолчанию, телнет использует TCP порт 23.
При подключении по телнет ты с помощью текстовых команд можешь говорить удаленному серверу что делать - запускать программы, создавать и удалять файлы и директории, управлять сетевыми параметрами, гонять гусей короче вообще всё на что хватит прав, а самое главное ты при этом можешь находиться на другом конце планеты.
Всё было бы просто замечательно, если бы телнет не был разработан в 69 году, как следует из названия - для тех самых телетайпов. А в те времена, на безопасность было вообще пофиг. Дело в том, что все команды, которые ты вбиваешь по телнет, включая логины и пароли передаются в открытом виде, а значит любой, кто перехватит твой телнет трафик сможет узнать всё что ты делал в рамках сессии.
Поэтому сегодня использование телнет для доступа к удаленным устройствам в профессиональном сообществе считается зашкваром. “Ну блеск, и как же теперь лазить на удаленные компы, сервера и прочий сетевой хлам”? - спросите вы. Тут хочется ответить тремя буквами - SSH (Secure Shell) или защищенная оболочка, хотя так никто не говорит.
Этот парень создан для защищенного удаленного администрирования и внимательно слушает TCP порт 22. Все команды, которые ты введешь в рамках сессии, включая логины и пароли, будут зашифрованы уникальным ключом и даже если хацкеры перехватят твой трафик, то вряд ли им удастся его расшифровать. Мало того, он ещё и целостность переданной информации будет проверять, чтоб ничего не потерялось и не побилось. Благодаря своей надёжности, SSH также применяется для защищенной передачи файлов, (SFTP - SSH File Transfer Protocol, SCP - Secure Copy) и туннелирования других протоколов.
Чтобы иметь возможность подключаться к девайсам как по телнет, так и по SSH нужно 2 вещи:
Удаленное устройство должно выступать как Telnet/SSH - сервер, то есть иметь некое ПО, которое будет понимать эти протоколы
У тебя должен быть Telnet/SSH клиент, с помощью которого ты сможешь инициировать соединение.
Обычно, в качестве такого клиента выступает эмулятор терминала. Это такая программа, которая даёт тебе возможность подключиться к устройству (по сети или напрямую) и выводит в отдельном окошке его консоль. Примером такой программы может служить PuTTY.
В данной статье будет описан процесс настройки SIP – транка на IP – АТС Asterisk с помощью в FreePBX 13 для провайдера Телфин.
Создание SIP - транка
Первый шаг является стандартным для настройки транка –в веб-интерфейсе необходимо открыть следующую вкладку: Connectivity – Trunks. Далее кликнуть на кнопку + Add Trunk.
Выберите «Add SIP (chan_sip) Trunk». Далее необходимо присвоить имя транку и задать исходящий CallerID
После, необходимо зайти во вкладку sip Settings и вновь ввести имя SIP - транка и информацию в поле Details:
Соответственно, Username – номер, полученный от провайдера Телфин, Secret – ваш пароль и host – адрес самого провайдера.
context=inbound_telphin
type=peer
username=4996546542 \тут должен быть ваш логин
fromuser=4996546542
secret=P@ssw0rd \тут должен быть ваш пароль
host=voice.telphin.com
port=5068
promiscredir=yes
Следующим шагом является настройка входящих параметров SIP - транка. Откроем вкладку Incoming, заполним поля “Context”, “Details”, “Register String”
type=peer
username=4996546542
host=voice.telphin.com
port=5068
И строка регистрации:
4996546542:P@ssw0rd@voice.tephin.com:5068/4996546542
Теперь ваша АТС будет регистрироваться у Телфина и входящие звонки будут приходить в контекст [inbound_telphin] на экстеншен 4996546542.
Исходящая маршрутизация
Далее необходимо задать имя маршрута и номер в Outbound Routes – номер такой же, как и при создании транка - в данном случае 4996546542.
Обратите внимание, так же необходимо указать транк в Trunk Sequence for Matched Routes, который был только что создан.
И, как финальный шаг, указываем правила набора для использования данного маршрута
После всех проведенных манипуляций, жмём Apply Config наверху страницы.