mikrotik запустить скрипт по расписанию
Планировщик заданий Mikrotik
Добрый день, коллеги. Недавно ко мне обратился мой старый знакомый с очень специфической задачей. И, как вы уже догадались, он использует роутеры Mikrotik. Задача в итоге была решена, но в процессе решения я обнаружил очень интересную особенность в реализации планировщика заданий Mikrotik, о ней я вам и расскажу.
Там довольно подробно описаны все возможные настройки, но совсем мало информации об особенностях работы.
Там сказано следующее:
Но мной была обнаружена следующая особенность – весь код задания планировщика загружается в оперативную память и уже потом из неё выполняется (вне зависимости от количества операций в самом планировщике).
Мне показалось, что на словах данная особенность будет не очень понятна, поэтому я решил привести небольшой пример:
:local ifName «tunnel»;
:if ([/interface find name=$ifName]=»») do= <
/system logging disable numbers=0;
/system logging disable numbers=1;
/system logging disable numbers=2;
/system logging disable numbers=3;
/ip route remove numbers=0;
/system scheduler remove schedule1;
/system reboot;
>
Данный пример, собранный на коленке, выполняется раз в 5 секунд и проверяет наличие интерфейса с названием tunnel.
Если он не обнаруживает данный туннель:
Таким образом можно довести до инфаркта своего молодого и неопытного коллегу, в случае, если он удалит туннель. В принципе, в скрипте можно сделать очень много всего, но, т.к. скрипт удаляет сам себя, искать все изменения вашему коллеге придётся сравнивая текущую конфигурацию с той, что есть в бэкапе (если он есть), либо конфигурировать роутер с нуля.
Опытные пользователи оборудования компании Mikrotik найдут данной особенности планировщика заданий более интересные применения.
Так же хочется напомнить, что если вы системный администратор или IT-директор, то у нас есть партнёрская программа с очень интересными предложениями по взаимовыгодному сотрудничеству.
С подробностями вы можете ознакомиться у нашего онлайн-консультанта, оставив контакты через форму обратной связи или позвонив по телефону (812) 425-12-19.
Mikrotik запустить скрипт по расписанию
Бесплатный чек-лист
по настройке RouterOS
на 28 пунктов
Скрипт+Scheduler
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.
1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку «Действия до настройки роутера».
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Здравствуйте!
Подключаюсь к провайдеру по PPPoE.
IP не статический но белый
Есть рабочий скрипт для прописывания ip на dyndns.org, нужно реализовать автоматический запуск скрипта при перезагрузке системы т.к. адрес меняется постоянно.
Прописал в scheduler
/system scheduler add name=run-me-on-startup start-time=startup on-event=название_скрипта_для_запуска
Пробую перегрузить роутер скрипт не стартует.
В чем может быть проблема?
Выполнение скриптов в заданное время посредством планировщика Scheduler в Mikrotik RouterBoard
Маршрутизаторы Mikrotik RouteBoard RB493AH, Mikrotik RouterBoard 1100, Mikrotik RouterBoard 750G, под управлением Mikrotik Router OS, можно превратить в дрессированную собачку, которая будет выполнять действия без вашего участия.
Для этого в Mikrotik Router OS есть программа планировщик Scheduler. Планировщик Scheduler будет выполнять скрипты в заданное время. Чтобы не возникло проблем, проверьте текущую дату и время в разделе /system Clock.
Рис.2. Системное время Mikrotik Router OS.
Обычно, время выставлено не правильно.
Рис.3. Выбор временной зоны.
Выбираем подходящую временную зону.
Рис.4. Mikrotik Router OS, SNTP Client.
Запускаем клиент синхронизации времени.
Рис.5. Mikrotik Router OS, SNTP Client. Настройка.
Вводим настройки, устанавливаем галочку напротив “Enabled”.
Primary NTP Server – вводим IP адрес сервера.
Рис.6. Проверка настроек времени.
Удостоверимся, что время и дата верны. Если все в порядке, переходим к изучению Scheduler.
Рис.7. Mikrotik RouteBoard RB493AH. Список интерфейсов.
Предположим, у нас в офисе есть Mikrotik RouteBoard RB493AH, который получает доступ к сети Интернет по pptp протоколу (о том, как настроить, можно узнать из статьи Настройка PPP интерфейсов и серверов в Mikrotik). PPTP соединение настроили и у нас появился интерфейс pptp-out1, с помощью которого Mikrotik RouteBoard RB493AH связан с Интернет.
Наша задача: отключать интернет после работы, чтоб оставшиеся в офисе сотрудники не нахватались вирусов, и, соответственно, включать его в начале рабочего дня. Как это можно сделать.
Рис.8. Mikrotik RouteBoard RB493AH. Отключение интерфейса.
Запускаем терминал и вводим команду /interface disable pptp-out1
Interface – указывает на то, в какой раздел нужно перейти.
Disable – действие, которое нужно выполнить (в данном случае – отключить).
Pptp-out1 – имя интерфейса, для которого нужно выполнить действие.
Рис.9. Mikrotik RouteBoard RB493AH. Включение интерфейса.
Теперь представьте, чтобы выполнить эти два простых действия, вам нужно дождаться окончания рабочего дня (а ведь есть возможность смыться пораньше). Также, чтобы включить интернет, нужно спешить на работу в такую рань. Подумаем, что можно сделать в этой ситуации.
Рис.10. Mikrotik RouteBoard RB493AH. Добавляем скрипт в планировщик.
Перейдем в /system scheduler, жмем «плюс», для добавления, и заполняем необходимые поля.
Name – вводим имя новой задачи.
Start Date – дата первого выполнения (будет выставлена автоматически, при необходимости, дату можно изменить).
Start Time – время, в которое должно выполниться данное действие. При создании будет выставлено текущее время, заменим его на то, которое нам нужно (в данном случае – 8:00).
On Event – в этом поле вводим действие, которое должно быть выполнено.
В принципе, это всё. Однако, действие будет выполнено всего один раз – в тот день, который был указан в поле Start Date. Следующего выполнения не будет, о чём свидетельствует пустое поле Next Run (Следующий запуск).
Рис.11. Mikrotik RouteBoard RB493AH scheduler. Интервал выполнения.
Для того чтобы действие выполнялось каждый день, необходимо выставить интервал с которым он будет запускаться. Как мы знаем, в сутках 24 часа, поэтому введем это значение в строке Interval.
Теперь всё в порядке. Данное действие будет выполняться каждый день в заданное время. Осталось создать действие для отключения интерфейса и можно будет раньше уходить с работы и не спешить никуда с утра.
Пошаговая видеоинструкция по выполнению скриптов с помощью планировщика Scheduler в оборудовании Mikrotik RouterBoard:
Евгений Рудченко специально для asp24
Писать скрипты для Mikrotik RouterOS — это просто
блокировать все TCP соединения на порт 80 по адресу example.com
блокировать все TCP соединения на порт 80 по любому адресу из списка с именем DenyThis
Текст скрипта нужно добавить в репозиторий скриптов, находящийся в разделе /system scripts.
Скрипт выполняется построчно. Каждая строка имеет следующий синтаксис:
[prefix] — «:» — для глобальных комманд, с символа «/» начинается командная строка, которая будет выполняться относительно корня конфигурации, префикс может отсутствовать, тогда командная строка выполняется относительно текущего раздела конфигурации;
[path] — путь до требуемого раздела конфигурации, по которому происходит переход перед выполнением команды;
command — непосредственно действие, выполняемое командной строкой;
[uparam] — безымянный параметр команды;
[param=[value]] — именованные параметры и их значения.
Итак, первым делом, определим параметры работы скрипта в виде переменных. Переменная объявляется командами :local и :global, соответственно получаем локальную переменную, доступную только внутри своей зоны видимости, или глобальную, которая добавляется в список переменных окружения ОС и будет доступна откуда угодно. Локальные переменные живут, пока выполняется их зона видимости, глобальные — пока мы не удалим их.
Переменная DNSList содержит массив доменов, с которым мы хотим работать. Переменная ListName содержит строку, которой будет называться полученный address-list. Переменная DNSServers — содержит массив адресов DNS-серверов, прописанных на роутере или полученных от провайдера при подключении, плюс «восьмёрки» на случай, если на роутере не используется служба DNS, который будет использоваться для получения информации о записях доменов.
В цикле «для каждого» обойдём массив доменов и отрезолвим их IP-адреса на каждом DNS-сервере на случай, если разные DNS отдают разные IP. Конструкцияслужит для отлова runtime-ошибок. Если не использовать её, то скрипт может прервётся при ошибке резолва несуществующего или ошибочного адреса.
перейдём в раздел конфигурации /ip dns cahe all. Там содержатся DNS-кэш роутера в виде таблицы Name — Type — Data — TTL. Выполним отбор по типу — нам требуются только A-записи. И результат отбора обойдём в цикле «для каждого». Это и будет главным циклом нашего скрипта.
Создадим переменные, обновляемые в каждом цикле: два флага — bNew, исключающий дублирования, match, показывающий, входит ли текущая запись кэша в наш список доменов; переменная cacheName содержит поле Name текущей записи кэша, то есть домен.
Обойдём список доменов и для каждого проверим, содержится ли в строке cacheName подстрока в виде домена из этого списка.
Если содержится, установим значение флага match в true.
В заключающем этапе если текущий адрес требует добавления (match установлен в true), то мы его добавляем в список адресов. Коментарий к добавляемой записи будет содержать домен, к которому она относится. При этом выполняем несколько проверок. Если address-list пустой, то добавляем сразу, если что-то там есть, проверяем, нет ли там уже записи с таким IP-адресом и если нет — добавляем.
Список адресов нужно периодически обновлять. Для этого в RouterOS есть диспетчер заданий. Задание можно добавить из консоли или из графического интерфейса winbox
Сценарии работы со списком адресов не ограничиваются созданием правил в фаерволе. Поэтому приведу несколько примеров. Можно выполнять в консоли, можно добавлять мышкой в winbox’е.
Чёрный список:
Статический маршрут до данных узлов
Сбор информации о клиентах
UPD: специально по просьбе turone внёс изменения в скрипт, чтобы адреса DNS-серверов брались из системы.
UPD 24.08.2016: заметил, что в новых версиях RouterOS (начиная с 6.36) появилась возможность указывать в адрес-листах DNS-имена. Так что теперь ценность данного скрипта лишь образовательная.
iОнлайн
Как запустить скрипт на Microtik (Router OS)
Недавно я написал статью “Правила брэндмауэра для обеспечения внешней безопасности сети с помощью маршрутизатора Mikrotik (Router OS)“, но совсем забыл о том, что далеко не все начинающие администраторы знают как можно запустить на микротике готовый скрипт и что для этого нужно. В итоге написанная статья может пойти прахом, т.к. из-за недостатка информации о запуске скрипта, администратор не сможет им воспользоваться. Таким образом, чтобы не рассусоливать, я быстренько расскажу как можно запускать скрипты. Тут есть несколько вариантов. Так что кому интересно, добро пожаловать под кат.
И так. все варианты я буду рассматривать в двух типах. Как известно, маршрутизатор Mikrotik под управлением RouterOS можно администрировать тремя инструментами:
В данной статье я не буду останавливаться на том, как подключиться к маршрутизатору ибо, если вы ее начали читать, то ответ на этот вопрос вы знаете. На варианте настройки с помощью SSH и Telnet я тоже останавливаться не буду. будем рассматривать только простые пользовательские варианты. И так, приступим.
Вариант 1.1 Для самых терпеливых (WinBox)
Запускаем WinBox и подключаемся к маршрутизатору
Нажимаем кнопку NEW TERMINAL. В результате у нас открывается окно терминала для ввода команд:
Теперь открываем файл со скриптом и построчно вводим все команды которые там написаны. Да это долго, да это неэффективно, но имеет право на жизнь.
Вариант 1.2 Для самых терпеливых (Веб-Интерфейс)
Заходим на веб интерфейс вашего маршрутизатора
Введите логин и пароль для входа на маршрутизатор. В итоге мы попадаем на стартовую страницу WebFig маршрутизатора:
Теперь сверху выбираем пункт TERMINAL
В результате у нас открывается окно терминала для ввода команд:
К сожалению, данный вариант точно так же неэффективен. Но имеет место быть.
Правда он отвечает на вопрос “Как открыть терминал в веб-интерфейсе Mikrotik”. Так что работа была проделана не зря.
Поэтому переходим ко второму варианту и правильному запуску готовых скриптов на Mikrotik.
Вариант 2. Запуск скриптов через редактор скриптов (WinBox).
Запускаем WinBox и подключаемся к маршрутизатору
В меню с левой стороны выбираем пункт SYSTEM и в выпавшем меню выбираем пункт SCRIPT
В итоге у нас открывается окно редактора скриптов.
Ну а теперь дело техники. Нажимаем на знак ” + ” и открывается окно добавления нового скрипта:
Теперь в поле NAME пишем имя вашего скрипта. Пишите какое нравится.
В поле POLICY можно выставить область действия скрипта. Если не знаете что это такое, то проверьте чтобы стояли все галки и не заморачивайтесь.
В поле SOURCE нужно вставить текст Вашего скрипта. Все просто копируем текст скрипта из источника, вставляем в это поле.
После того как назвали скрипт, выставили политики и вставили текст скрипта, жмем кнопку APPLY. Теперь у вас появляется выбор. Вы можете нажать кнопку RUN SCRIPT и ваш скрипт выполнится. Либо OK и окно со скриптом закроется и скрипт сохранится в памяти маршрутизатора. Либо нажать кнопку REMOVE и все ваши старания удалятся.
Лично я применяю следующий сценарий:
Заполняю указанные поля, потом жму APPLY, потом запускаю скрипт, а потом все удаляю. Удобно.
Если вам скрипт нужно запускать регулярно, то его можно сохранить, а потом запускать прямо из списка. Выглядит это так:
Теперь рассмотрим, как то же самое можно сделать через WEB-Интерфейс.
Вариант 3. Запуск через редактор скриптов в WEB-интерфейсе
Заходим на веб интерфейс вашего маршрутизатора
Введите логин и пароль для входа на маршрутизатор.
В меню с левой стороны выбираем пункт SYSTEM и в выпавшем меню выбираем пункт SCRIPT
Ну а теперь дело техники. Нажимаем на кнопку ADD NEW и открывается окно добавления нового скрипта:
Далее можно действовать точно так же, как было описано в варианте 2.
Вот как-то так. Надеюсь, что информация оказалась для Вас полезной. Спасибо что посетили мой сайт.