Выключение интерфейса при отключении определённого МАС адреса

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Аватара пользователя
b1gst0ne
Сообщения: 13
Зарегистрирован: 30 янв 2018, 02:13

Выключение интерфейса при отключении определённого МАС адреса

Сообщение b1gst0ne »

Доброго времени суток.
Есть RouterBOARD 952Ui-5ac2nD, интересует как реализовать включение/отключение интерфейса подключения интернета при подключении/отключении определённого МАС адреса?
т.е. когда я ухожу из дома унося мой телефон, который подключён по WIFI, нужно чтобы интернет на роутере отключался, а когда я возвращался и мой телефон переподключался к сети WIFI интернет снова появлялся на роутере.
Я думал сделать IP для MAC адреса статичным и через Netwatch пинговать его, но думал, что есть более простой и "штатный" способ реализовать задуманное.

Аватара пользователя
Chupaka
Сообщения: 2904
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение Chupaka »

Доброго.

Скриптов на события WiFi я в RouterOS не вижу, поэтому самый очевидный вариант - статика DHCP и Netwatch.

Аватара пользователя
b1gst0ne
Сообщения: 13
Зарегистрирован: 30 янв 2018, 02:13

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение b1gst0ne »

Можно попробовать найти MAC так:
/interface wireless registration-table find mac-address
Но есть проблема в современных телефонах, они в режиме ожидания отключаются от wifi для экономии заряда АКБ.

Для включения интерфейса будет достаточно факта регистрации в сети wifi. Помогите найти или придумать событие/условие для отключения интерфейса, чтобы не пришлось находясь фактически дома, но не пользуясь телефоном некоторое время, ловить обрывы интернета и судорожно тянуться к телефону для пробуждения и регистрации его в сети wifi.

Аватара пользователя
Chupaka
Сообщения: 2904
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение Chupaka »

Предлагаю использовать DHCP для этого, скрипт lease-script в DHCP-сервере.

Что-то типа

Код: Выделить всё

if ($leaseActMAC = "МАК-адрес телефона") do={
	if ($leaseBound = 1) do={
		#включаем Интернет
		/interface enable pppoe-out1
	} else={
		#выключаем Интернет
		/interface disable pppoe-out1
	}
}
Лиза будет удаляться лишь по истечении lease-time, а не сразу после отключения от вайфая - и тогда же будет отключаться Интернет.

Аватара пользователя
b1gst0ne
Сообщения: 13
Зарегистрирован: 30 янв 2018, 02:13

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение b1gst0ne »

Спасибо за помощь,
Я не силён в синтаксисе скриптов, а как добавить несколько MAC адресов?

Аватара пользователя
Chupaka
Сообщения: 2904
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение Chupaka »

И выключать, пока хоть один висит в лизах? Это сложнее, тут логика должна быть другая: при истечении лизы проверять, есть ли кто ещё живой...

Аватара пользователя
Chupaka
Сообщения: 2904
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение Chupaka »

Что-то типа

Код: Выделить всё

if ($leaseActMAC = "МАК-адрес телефона1" or $leaseActMAC = "МАК-адрес телефона2" or $leaseActMAC = "МАК-адрес телефона3") do={
	if ($leaseBound = 1) do={
		#включаем Интернет
		/interface enable pppoe-out1
	} else={
		#проверяем и выключаем Интернет
		if ([:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона1" ]] = 0 and
			[:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона2" ]] = 0 and
			[:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона3" ]] = 0) do={
			/interface disable pppoe-out1
		}
	}
}

Аватара пользователя
kardash
Сообщения: 157
Зарегистрирован: 27 апр 2017, 22:08
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение kardash »

Вопрос с выключением решается просто.... Как включить назад? Отошёл покурить на улицу или в сортир и он выключился..... Включить только ручками? Так и выключить можно тогда ручками.... :-) Надо наверное смену профиля с паролем и заменой SSID делать?
Мой блог по MikroTik: https://www.netflow.by/blog/tag/MikroTik 8-)

Аватара пользователя
Chupaka
Сообщения: 2904
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение Chupaka »

Вернулся, телефон подключился, получил адрес - и вуаля, Интернет опять включился скриптом. В чём проблема-то? :)

HankH
Сообщения: 3
Зарегистрирован: 24 янв 2020, 15:58

Re: Выключение интерфейса при отключении определённого МАС адреса

Сообщение HankH »

Доброго времени суток присутствующим.

С недавнего времени являюсь владельцем роутера от Микротик.
Пока не разобрался с языком программирования. Но очень впечатляет.

Подскажите, где можно почитать об этом языке?

И самое главное - работает ли вышеуказанный скрипт?
Chupaka писал(а):
30 янв 2018, 15:03
Что-то типа

Код: Выделить всё

if ($leaseActMAC = "МАК-адрес телефона1" or $leaseActMAC = "МАК-адрес телефона2" or $leaseActMAC = "МАК-адрес телефона3") do={
	if ($leaseBound = 1) do={
		#включаем Интернет
		/interface enable pppoe-out1
	} else={
		#проверяем и выключаем Интернет
		if ([:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона1" ]] = 0 and
			[:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона2" ]] = 0 and
			[:len [/ip dhcp-server lease find status="bound" mac-address="МАК-адрес телефона3" ]] = 0) do={
			/interface disable pppoe-out1
		}
	}
}
Хочется автоматически отключать WI-Fi на роутере (обычно ночью) при отсутствии активности Wi-Fi клиентов (компы + смартфоны). Компы, подключенные по кабелю, пускай работают.
Указанного скрипта достаточно или надо ещё что-то городить или уточнять скрипт? А, может, моё желание вообще невыполнимо?

Спасибо.