Пишем скрипт, который будет проверять текущее время, и в соответствии с ним будет включать или выключать 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:RadioOnOffPolicy:[X] read, [X] write, [X] policySource:[Вставить содержимое скрипта]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:RadioOnOffStart Date:[Текущая дата, встает автоматически]Start Time:[Текущее время, встает автоматически]Interval:00:05:00On Event:/system script run RadioOnOffPolicy:[X] read, [X] write, [X] policyComment:Script to ensure wireless lan radio is ON or OFF
После чего подожди ~6 минут, и посмотри в логе — должны появиться соответствующие записи о том что скрипт успешно выполняется.





