Статистика пользователей
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Статистика пользователей
В общем настроил я свой роутер, нашёл в сети мануал, и сделал бесплатную точку доступа, виртуальную (или как то так называется) бесплатная точка заведена на отдельный DHCP и bridge, можно ли как то вести статистику подключавшихся? В идеале при подключении к точке в файл: "Free_AP_User" (допустим) виноситься МАС адрес и желательно время подключения, если уж совсем по кошерному, то ещё и время отключения данного юзера. Спасибо.
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Итак-с: кое чего наварганил:
В итоге в файл myFile.txt пишутся подключающиеся МАС адреса
Код: Выделить всё
{
: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"
}
}
}
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
У меня для вас плохая новость: как только файл растянется до 4096 байт - скрипт перестанет работать. Увы, это ограничение по записи/чтению файлов из скрипта обойти нельзя
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Если больше нигде не используется команда :log - то можно сделать такой финт ушами:
1) Настроить, куда журналировать
2) Отправить туда весь вывод script,info
3) Из скрипта писать через
1) Настроить, куда журналировать
Код: Выделить всё
/system logging action add name=myjournal target=disk disk-file-name=journal disk-file-count=5
Код: Выделить всё
/system logging add topics=script,info action=myjournal
Код: Выделить всё
:log info "bla-bla-bla";
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Финт ушами не пройдёт, у меня есть ещё два скрипта, где используется команда :log.
А prefix для чего? Он не спасёт ситуацию? Не поможет разделить выводы разных скриптов?
И по ходу дела вопрос, вот это бла-бла-бла, в кавычках которое, нужно заменить на "$ContentsFile\n$o, я правильно понял?
А prefix для чего? Он не спасёт ситуацию? Не поможет разделить выводы разных скриптов?
И по ходу дела вопрос, вот это бла-бла-бла, в кавычках которое, нужно заменить на "$ContentsFile\n$o, я правильно понял?
Последний раз редактировалось maxim_minton 21 мар 2017, 08:23, всего редактировалось 2 раза.
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Тогда нужен ещё один скрипт:
1. Взять файл myFile.txt
2. Если файл больше или равен 3000байт, то
2.1 переименовать файл в мyFile_Full.txt
2.2 создать новый файл с названием myFile.txt
3. Иначе завершить скрипт.
Поставить его на выполнение раз в 2-3 дня, и пусть сравнивает. Такое пойдёт?
1. Взять файл myFile.txt
2. Если файл больше или равен 3000байт, то
2.1 переименовать файл в мyFile_Full.txt
2.2 создать новый файл с названием myFile.txt
3. Иначе завершить скрипт.
Поставить его на выполнение раз в 2-3 дня, и пусть сравнивает. Такое пойдёт?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
по Topics можно разделить попробовать:maxim_minton писал(а): ↑21 мар 2017, 07:56 Финт ушами не пройдёт, у меня есть ещё два скрипта, где используется команда :log.
Код: Выделить всё
/system logging add topics=script,debug action=myjournal
:log debug "bla-bla-bla";
(вполне возможно, что в debug вылезет ещё какая-нибудь отладочная информация - так что лучше сначала проверить )
нет, он дописывается уже после того, как сообщение направлено в один из actionsmaxim_minton писал(а): ↑21 мар 2017, 07:56 А prefix для чего? Он не спасёт ситуацию? Не поможет разделить выводы разных скриптов?
да, как вариантmaxim_minton писал(а): ↑21 мар 2017, 07:56 И по ходу дела вопрос, вот это бла-бла-бла, в кавычках которое, нужно заменить на "$ContentsFile\n$o, я правильно понял?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
до такого размера файл дойдёт за сотню подключений. если связь неуверенная и клиент будет постоянно переподключаться - 2-3 дня может оказаться многоватоmaxim_minton писал(а): ↑21 мар 2017, 08:03 Поставить его на выполнение раз в 2-3 дня, и пусть сравнивает. Такое пойдёт?
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
В общем зашел я с другой стороны спасибо Вам за подсказку. На НАСе поднят 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")
}
}
}
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Тогда подсказка по самому скрипту: конструкцию вида
лучше заменить на что-то вроде
Оно как-то проще воспринимается
Код: Выделить всё
: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={
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Спасибо, это уже оптимизация, на самом деле, это не я писал эту часть скрипта, взял уже готовую. Поменяем.
-
- Сообщения: 6
- Зарегистрирован: 29 мар 2017, 23:15
Re: Статистика пользователей
с таким успехом можно еще и dhcp сервер поднять отдельный с полным логом,что бы уже точно видно было,кому и когда выдался адрес.
+ воткнуть туда flow коллектор и собирать статистику,кто и что посещал.
+ воткнуть туда flow коллектор и собирать статистику,кто и что посещал.
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Он и так отдельный, а как сделать, чтоб в логах было понятно с какого DHCP идёт информация? Flow коллектор мне не принципиален, разве что в целях попробовать как оно работает.
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Тут бы ещё придумать вариант, на тему, записи в логе когда клиент отключился.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
У DHCP есть такая параметра, как lease-script. Скрипт выполняется, когда адрес выдаётся или забирается. Вот по этому событию можно и ловить и писать в лог.
-
- Сообщения: 79
- Зарегистрирован: 14 фев 2017, 10:18
Re: Статистика пользователей
Это я уже нашел, там крутиться мой скрипт, но он работает только когда выдается, я был не в курсе, что он еще срабатывает когда IP забирается.
Если IP назначается допустим на 30 минут, а клиент отключился через 3 минуты, то скрипт отработает через 30 минут, да?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Да. Поэтому есть смысл выдавать адрес на меньшее времяmaxim_minton писал(а): ↑30 мар 2017, 21:12 Если IP назначается допустим на 30 минут, а клиент отключился через 3 минуты, то скрипт отработает через 30 минут, да?
-
- Сообщения: 1
- Зарегистрирован: 18 сен 2018, 14:14
Re: Статистика пользователей
Люди, может кто-нибудь скинуть готовую версию этого скрипта с возможностью сохранения на внешнее устройство/файл
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: Статистика пользователей
У меня мейчас работает скрипт "весом" в 10 мегабайт, что странно, но он отрабатывает 4 минуты на RB3011
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Скрипт читает файл весом 10 МБ, или же скрипт сам весом 10 МБ? Ограничение действует только на первый случай.
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: Статистика пользователей
Сам скрипт 10МБ, пока ещё второй файл всего 3.8 мб, который данный скрипт создаёт, посмотрим что будет дальше
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Скрипт создаёт файл через /file set myFile.txt contents="ххх"?
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: Статистика пользователей
Через ...terse file="xxx.xxx" append
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Статистика пользователей
Там левее, я так понимаю, команда print? Так вот это она создаёт файл. На это ограничений нет. Ограничение только на работу с данными непосредственно в скрипте.