Статистика пользователей

Базовая функциональность RouterOS
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Статистика пользователей

Сообщение maxim_minton »

В общем настроил я свой роутер, нашёл в сети мануал, и сделал бесплатную точку доступа, виртуальную (или как то так называется) бесплатная точка заведена на отдельный DHCP и bridge, можно ли как то вести статистику подключавшихся? В идеале при подключении к точке в файл: "Free_AP_User" (допустим) виноситься МАС адрес и желательно время подключения, если уж совсем по кошерному, то ещё и время отключения данного юзера. Спасибо.
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Итак-с: кое чего наварганил:

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

{
    :local t [/system clock get time];
    :local d [/system clock get date];
    :foreach i in=[/ip dhcp-server lease find] do={
        :if ([/ip dhcp-server lease get $i status]="bound" && [/ip dhcp-server lease get $i comment]="" && [/ip dhcp-server lease get $i server]="dhcp-free") do={
        :local g [("Guest" . "-" . $d . "-" . $t)]
        :local o [/ip dhcp-server lease get $i mac-address];
        /ip firewall address-list add address=[/ip dhcp-server lease get $i address] list="Drop" timeout=1d
        :local ContentsFile [/file get myFile.txt contents];
         /file set myFile.txt contents="$ContentsFile\n$o"
        }
    }
 }
В итоге в файл myFile.txt пишутся подключающиеся МАС адреса 8-)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

У меня для вас плохая новость: как только файл растянется до 4096 байт - скрипт перестанет работать. Увы, это ограничение по записи/чтению файлов из скрипта обойти нельзя
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

Если больше нигде не используется команда :log - то можно сделать такой финт ушами:

1) Настроить, куда журналировать

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

/system logging action add name=myjournal target=disk disk-file-name=journal disk-file-count=5
2) Отправить туда весь вывод script,info

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

/system logging add topics=script,info action=myjournal
3) Из скрипта писать через

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

:log info "bla-bla-bla";
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Chupaka писал(а): 20 мар 2017, 23:37 У меня для вас плохая новость: как только файл растянется до 4096 байт - скрипт перестанет работать. Увы, это ограничение по записи/чтению файлов из скрипта обойти нельзя
Это конечно "радостная" новость, ничего не могу сказать ...
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Финт ушами не пройдёт, у меня есть ещё два скрипта, где используется команда :log. :(

А prefix для чего? Он не спасёт ситуацию? Не поможет разделить выводы разных скриптов?

И по ходу дела вопрос, вот это бла-бла-бла, в кавычках которое, нужно заменить на "$ContentsFile\n$o, я правильно понял?
Последний раз редактировалось maxim_minton 21 мар 2017, 08:23, всего редактировалось 2 раза.
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Тогда нужен ещё один скрипт:
1. Взять файл myFile.txt
2. Если файл больше или равен 3000байт, то
2.1 переименовать файл в мyFile_Full.txt
2.2 создать новый файл с названием myFile.txt
3. Иначе завершить скрипт.

Поставить его на выполнение раз в 2-3 дня, и пусть сравнивает. Такое пойдёт?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

maxim_minton писал(а): 21 мар 2017, 07:56 Финт ушами не пройдёт, у меня есть ещё два скрипта, где используется команда :log. :(
по Topics можно разделить попробовать:

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

/system logging add topics=script,debug action=myjournal
:log debug "bla-bla-bla";
где debug может ещё быть warning или error

(вполне возможно, что в debug вылезет ещё какая-нибудь отладочная информация - так что лучше сначала проверить :))
maxim_minton писал(а): 21 мар 2017, 07:56 А prefix для чего? Он не спасёт ситуацию? Не поможет разделить выводы разных скриптов?
нет, он дописывается уже после того, как сообщение направлено в один из actions
maxim_minton писал(а): 21 мар 2017, 07:56 И по ходу дела вопрос, вот это бла-бла-бла, в кавычках которое, нужно заменить на "$ContentsFile\n$o, я правильно понял?
да, как вариант
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

maxim_minton писал(а): 21 мар 2017, 08:03 Поставить его на выполнение раз в 2-3 дня, и пусть сравнивает. Такое пойдёт?
до такого размера файл дойдёт за сотню подключений. если связь неуверенная и клиент будет постоянно переподключаться - 2-3 дня может оказаться многовато :)
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

В общем зашел я с другой стороны спасибо Вам за подсказку. На НАСе поднят SYSLog сервер, и туда пишется вывод скрипта, плюс добавилось еще и время отключения клиента :)

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

{
    :local t [/system clock get time];
    :local d [/system clock get date];
    :foreach i in=[/ip dhcp-server lease find] do={
        :if ([/ip dhcp-server lease get $i status]="bound" && [/ip dhcp-server lease get $i comment]="" && [/ip dhcp-server lease get $i server]="dhcp-free") do={
        :local g [("Guest" . "-" . $d . "-" . $t)]
         /ip dhcp-server lease set $i comment=$g;
        /ip firewall address-list add address=[/ip dhcp-server lease get $i address] list="Drop" timeout=1d
         :local o [/ip dhcp-server lease get $i mac-address];
         :local q [/ip dhcp-server lease get $i address];
         /log warning ("New_AP_User_$t - $d - $o - $q")
      

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

Re: Статистика пользователей

Сообщение Chupaka »

Тогда подсказка по самому скрипту: конструкцию вида

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

:foreach i in=[/ip dhcp-server lease find] do={
        :if ([/ip dhcp-server lease get $i status]="bound" && [/ip dhcp-server lease get $i comment]="" && [/ip dhcp-server lease get $i server]="dhcp-free")
лучше заменить на что-то вроде

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

:foreach i in=[/ip dhcp-server lease find status=bound and !comment and server="dhcp-free"] do={
Оно как-то проще воспринимается
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Спасибо, это уже оптимизация, на самом деле, это не я писал эту часть скрипта, взял уже готовую. Поменяем.
prozaklob
Сообщения: 6
Зарегистрирован: 29 мар 2017, 23:15

Re: Статистика пользователей

Сообщение prozaklob »

с таким успехом можно еще и dhcp сервер поднять отдельный с полным логом,что бы уже точно видно было,кому и когда выдался адрес.
+ воткнуть туда flow коллектор и собирать статистику,кто и что посещал.
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Он и так отдельный, а как сделать, чтоб в логах было понятно с какого DHCP идёт информация? Flow коллектор мне не принципиален, разве что в целях попробовать как оно работает.
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Тут бы ещё придумать вариант, на тему, записи в логе когда клиент отключился.
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

У DHCP есть такая параметра, как lease-script. Скрипт выполняется, когда адрес выдаётся или забирается. Вот по этому событию можно и ловить и писать в лог.
maxim_minton
Сообщения: 79
Зарегистрирован: 14 фев 2017, 10:18

Re: Статистика пользователей

Сообщение maxim_minton »

Chupaka писал(а): 30 мар 2017, 16:14 У DHCP есть такая параметра, как lease-script. Скрипт выполняется, когда адрес выдаётся или забирается. Вот по этому событию можно и ловить и писать в лог.
Это я уже нашел, там крутиться мой скрипт, но он работает только когда выдается, я был не в курсе, что он еще срабатывает когда IP забирается.

Если IP назначается допустим на 30 минут, а клиент отключился через 3 минуты, то скрипт отработает через 30 минут, да?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

maxim_minton писал(а): 30 мар 2017, 21:12 Если IP назначается допустим на 30 минут, а клиент отключился через 3 минуты, то скрипт отработает через 30 минут, да?
Да. Поэтому есть смысл выдавать адрес на меньшее время :)
Chante
Сообщения: 1
Зарегистрирован: 18 сен 2018, 14:14

Re: Статистика пользователей

Сообщение Chante »

Люди, может кто-нибудь скинуть готовую версию этого скрипта с возможностью сохранения на внешнее устройство/файл
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Статистика пользователей

Сообщение Sir_Prikol »

Chupaka писал(а): 20 мар 2017, 23:37 У меня для вас плохая новость: как только файл растянется до 4096 байт - скрипт перестанет работать. Увы, это ограничение по записи/чтению файлов из скрипта обойти нельзя
У меня мейчас работает скрипт "весом" в 10 мегабайт, что странно, но он отрабатывает 4 минуты на RB3011
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

Скрипт читает файл весом 10 МБ, или же скрипт сам весом 10 МБ? Ограничение действует только на первый случай.
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Статистика пользователей

Сообщение Sir_Prikol »

Сам скрипт 10МБ, пока ещё второй файл всего 3.8 мб, который данный скрипт создаёт, посмотрим что будет дальше :)
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

Скрипт создаёт файл через /file set myFile.txt contents="ххх"?
Аватара пользователя
Sir_Prikol
Сообщения: 562
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: Статистика пользователей

Сообщение Sir_Prikol »

Через ...terse file="xxx.xxx" append
Дома: CCR2004 (7-ISP(GPON)белый IP)
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: Статистика пользователей

Сообщение Chupaka »

Там левее, я так понимаю, команда print? Так вот это она создаёт файл. На это ограничений нет. Ограничение только на работу с данными непосредственно в скрипте.