Как сделать ограничение по продолжительности подключения к WiFi для конкретных узлов (как сделать декремент счетчика ) ?

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
777evgeny777
Сообщения: 67
Зарегистрирован: 25 апр 2017, 07:01

Добрый день, задумался об ограничении WiFi для детей, хочу сделать ограничение на устройство допустим 3 часа в день, вне зависимости от времени подключения, т.е. хочешь сразу трать хочешь кусками в течении дня. Штатно не смог найти как сделать, задумался о скриптах, нашел как проверить что устройство включено, и вот тут напоролся на засаду, не могу сделать декремент счетчика. Т.е. задумывалось так, в 00:00 счетчик сбрасывается на значение 180 (минут), каждую минуту шедуллер запускает скрипт с проверкой подключения по маку, если подключение есть то счетчик отнимается, и потом проверяется если счетчик достиг 0 то отключаем этого клиента в аккаунт листе, все выше упомянутое ясно как сделать. но как сделать декремент числовой переменной ???


777evgeny777
Сообщения: 67
Зарегистрирован: 25 апр 2017, 07:01

Что-то не там написал что-ли ? или не понятно что хотел ?
Неужели никто при написании скриптов не пытался сделать декремент числовой переменной ? или РоутерОС этого не позволяет сделать ?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Нет, всё нормально написал. Просто не все скриптингом вообще занимаются. Тем более, пытаясь прикрутить что-то из более продвинутых языков программирования. Впрямую нет ни инкрементирования, ни декрементирования. Только костыль.

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

:local dk 180;
:set dk ($dk - 1);
Как-то так...
P.S.: Хотя, возможно у кого-то есть другие сведения, я бы посмотрел. Возможно я не знаю этого.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
777evgeny777
Сообщения: 67
Зарегистрирован: 25 апр 2017, 07:01

Спасибо, попробую. Может есть какое-то готовое решение без скриптов как ограничить продолжительность вайфая в течении суток, при условии ,что подключаться в любое время и тратить лимит порциями ?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Что-то я не припоминаю, HotSpot в trial варианте использования просто отсчитывает время с момента первого подключения или фиксирует время работы с использованием Hot Spot... Давненько им не пользовался. Напомните, кто использует.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
777evgeny777
Сообщения: 67
Зарегистрирован: 25 апр 2017, 07:01

вспомнил про тему , отпишусь :
сделал тремя скриптами :
wto - время в минутах для работы вайфая
регулировка доступа осуществляется вкл- откл клиента в ассес листе
1 скрипт запускается при старте микрота инициализирует переменную wto:

:global wto 1;
/interface wireless access-list enable 6;

2 скрипт запускается в 00:00 и добавляет к оставшемуся времени еще 120 минут каждый день (т.е. по просьбе сына, его сэкономленные минуты не сгорают на следующий день, это очень полезный воспитательный и дисциплинирующий момент, как оказалось)

:global wto ($wto+120);
/interface wireless access-list enable 6;

3 скрипт запускается каждую минуту и собственно он и производит все сравнения и отключения

:if ( [/interface wireless access-list get 6 disable] != true ) do={
:if ([/interface wireless registration-table find mac-address=40:B0:76:BA:AA:64] != "") do={
:global wto ($wto-1);
:if ($wto < 1) do={
/interface wireless access-list disable 6;
}
}
}

Как то криво, но работает. Нужно еще чтобы не была включена опция Def. auth в настройках вайфая, что будет конечно не всем приемлемо, но использую аналогичную конструкцию, ограничение можно сделать и по иному приемлимому принципу.

А теперь собственно, возник новый вопрос :
А можно ли как то выводить значение глобальной переменной на LCD экран микротика RB2011 ?
И еще , каким приемом можно передать значение глобальной переменной с одного микротика в другой, естественно между ними есть физическая связь по интерфейсам ?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

777evgeny777 писал(а): 21 июл 2020, 16:30 А можно ли как то выводить значение глобальной переменной на LCD экран микротика RB2011 ?
И еще , каким приемом можно передать значение глобальной переменной с одного микротика в другой, естественно между ними есть физическая связь по интерфейсам ?
По первому не могу сказать, я LCD экран всегда считал излишеством и на него и внимания никогда не обращал.
По второму, напрямую передать значение наверное нет. Только костылями типа - пишем значение переменной в файл, а вторым Тиком при нужде с помощью fetch забираем файл и считываем значение. Жуть просто берёт от такой конструкции :-) Слишком много ненадёжных точек.
По вашим скриптам могу сказать одно. Я бы на вашем месте не пользовался номером позиции в адресном листе. Для гарантированного поиска нужной записи используйте комментарии.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
777evgeny777
Сообщения: 67
Зарегистрирован: 25 апр 2017, 07:01

Абсолютно согласен с замечаниями, в продакшен такой алгоритм нельзя пускать, это просто для сведения, таким же как и я ищущим, на базе его можно уже реализовать любое условие.
меня он устраивает т.к. микротик домашний и конфиг динамично не меняется, но за идею с комментариями спасибо, как то просто не задумывался что можно поставит такой репер и его отслеживать.
про передачу значения переменной мне тоже пришла в голову только мысль через внешний файл, но идея не нравится и развивать не стал, т.к. думаю что можно еще попробовать с одного микрота на другой передавать через телнет прямые команды на присваивание переменной конкретных значений, но замысел был именно в том, чтобы потом значение отображалось на экране дисплея, чтобы сын мог видеть сколько у него вайфая осталось. если я его научу заходить в микротик и смотреть самому значение переменной, то думаю в скором времени он начнет сообразит как его менять и на этом педагогическая роль оборудования прервется.


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

777evgeny777 писал(а): 22 июл 2020, 17:15 замысел был именно в том, чтобы потом значение отображалось на экране дисплея, чтобы сын мог видеть сколько у него вайфая осталось. если я его научу заходить в микротик и смотреть самому значение переменной, то думаю в скором времени он начнет сообразит как его менять и на этом педагогическая роль оборудования прервется.
На устройстве с mode button можно было бы по нажатию отправлять значение в телеграм.
Если кнопки нет, то как вариант, можно отправлять при достижении каких-то значений, или по таймеру.
В теории можно и получение команды через телеграм прикрутить - где-то в соседней теме есть рабочий скрипт.

Что касается доступа на сам микротик - то пользователю же не обязательно давать права на запись, достаточно только на чтение.


Telegram: @thexvo
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

podarok66 писал(а): 21 июл 2020, 17:11 По второму, напрямую передать значение наверное нет. Только костылями типа - пишем значение переменной в файл, а вторым Тиком при нужде с помощью fetch забираем файл и считываем значение. Жуть просто берёт от такой конструкции Слишком много ненадёжных точек.
Поправляю сам себя. если между двумя Микротами организован вход ssh по ключам (что, вобщем-то, правильно) , то насчёт передать что-либо, я пока не уверен, а вот забрать можно очень много. Как пример - забираем модель устройства и создаём глобальную переменную с этим значением

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

:global i ([/system ssh-exec address=192.168.100.10 user=podarok66 command=":put [/system routerboard get model]" as-value ] -> "output")
P.S: Попробовал, и передать можно

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

{:local y "123"; /system ssh-exec address=192.168.100.10 user=podarok66 command=":global cif $y"}
Так что передавайте, что вам угодно :-)


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить