Пишем скрипт, который будет проверять текущее время, и в соответствии с ним будет включать или выключать WiFi на MikroTik.
## Script to ensure wireless lan radio is ON or OFF ######################################### ## Set the Radio ON and OFF times here ## :local RadioOnTime "6:00"; :local RadioOffTime "23:00"; ## set to "no" if clock is being set manually after each reboot # ## set to "yes" if clock is being set using NTP client # :local UseNTPClientStatus "yes"; ######################################### :local CurrentTime [/system clock get time]; ## Setup log prefix :local LogPrefix "[RadioOnOff / $CurrentTime]"; ## get the name of the wlan radio interface :local RadioName [/interface get [find type=wlan] name]; :log info "$LogPrefix Radio Name = $RadioName"; ## First check if system clock has been syncronized with local time :local NTPSyncState [/system ntp client get enabled]; #:log info "NTP Client Status (#NTPSyncState) = $NTPSyncState"; ## Don't perform radio On or Off operation, if current real time is unknown, unless required :if (($NTPSyncState=true) or ($UseNTPClientStatus="no")) do { ## Check current ON or OFF status of radio # :local RadioDisabled [/interface get $RadioName disabled]; :log info "$LogPrefix Radio Disabled = $RadioDisabled"; ## Where the ON time is set earlier than the OFF time # :if ($RadioOnTime < $RadioOffTime) do { ## Radio should be ON between these times # :if (($CurrentTime > $RadioOnTime) and ($CurrentTime < $RadioOffTime)) do { if ($RadioDisabled=true) do { :log info "$LogPrefix Radio was OFF, now switching ON"; /interface enable $RadioName; } } else { if ($RadioDisabled=false) do { :log info "$LogPrefix Radio was ON, now switching OFF"; /interface disable $RadioName; } } } ## Where the ON time is set later than the OFF time # :if ($RadioOnTime > $RadioOffTime) do { ## Radio should be OFF between these times # :if (($CurrentTime < $RadioOnTime) and ($CurrentTime > $RadioOffTime)) do { if ($RadioDisabled=false) do { :log info "$LogPrefix Radio was ON, now switching OFF"; /interface disable $RadioName; } } else { if ($RadioDisabled=true) do { :log info "$LogPrefix Radio was OFF, now switching ON"; /interface enable $RadioName; } } } } else { :log info "$LogPrefix System clock may not be synchronized to local time, unable to perform operation"; } #:log info "RadioOnOff Script completed";
Переходим в секцию System
→ Scripts
и жмякаем на Add New
. Заполняем поля следующим образом:
Name
:RadioOnOff
Policy
:[X] read, [X] write, [X] policy
Source
:[Вставить содержимое скрипта]
Comment
:Script to ensure wireless lan radio is ON or OFF
В верхней секции скрипта выставляем необходимые настройки времени (включения и выключения). Скрипт проверяет синхронизировано ли время с помощью ntp
клиента. Если синхронизация времени не доступна — выстави в UseNTPClientStatus
значение no
.
Проверка
Для проверки запускай терминал или подключись к маршрутизатору с помощью SSH, после чего выполни:
[admin@router] > /system script run RadioOnOff
[admin@router] > /log print
И посмотри чтоб в логе всё было хорошо. Если не работает как надо — раскомментируй дополнительное логирование (#:log info "...";
) в скрипте и проанализируй вывод.
Добавление задания
Для того чтоб добавить задание на периодический запуск скрипта переходим в System
→ Scheduler
и так же нажимаем Add New
. Настраиваем:
Enabled
:[X]
Name
:RadioOnOff
Start Date
:[Текущая дата, встает автоматически]
Start Time
:[Текущее время, встает автоматически]
Interval
:00:05:00
On Event
:/system script run RadioOnOff
Policy
:[X] read, [X] write, [X] policy
Comment
:Script to ensure wireless lan radio is ON or OFF
После чего подожди ~6 минут, и посмотри в логе — должны появиться соответствующие записи о том что скрипт успешно выполняется.