импорт mac в переменную
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
подскажите как с ip hotspot users импортировать mac-адреса всех юзеров в одну переменную.
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
просто список через замятую типа global mac [ip hotspot user get value-name=mac-address] для всех. я так понял через :foreach
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
може подскажешь как его до кучи слепить?
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
как то так
Код: Выделить всё
:foreach i in [/ip hotspot user find] do={:put [/ip hotspot user get $i mac-address ]}
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
vqd писал(а):как то такКод: Выделить всё
:foreach i in [/ip hotspot user find] do={:put [/ip hotspot user get $i mac-address ]}
спасибо, сделал так, но записывает только последний мак, я так понял он перезаписывает переменную, а мне нужно ее дополнить:
Код: Выделить всё
global 2
:foreach i in=[/ip hotspot user find] do={:set 2 [/ip hotspot user get $i mac-address ]}
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
Ну логично )))
:set tmp ($tmp . ", " . "123"))
В ТМП будут добавляться 123 через запятую
:set tmp ($tmp . ", " . "123"))
В ТМП будут добавляться 123 через запятую
Есть интересная задача и бюджет? http://mikrotik.site
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Прикольно выходит. Я тут накропал на основе вашей беседы скриптик, который одним махом формирует списочек подключенных МАС-адресов из Leases:
Очень даже интересное начинание. Оставлю здесь для возможных идей со стороны сообщества. Подкидывайте, кому что придет в голову.
Код: Выделить всё
{
:local t;
:foreach i in=[/ip dhcp-server lease find] do={
:if ([/ip dhcp-server lease get $i status]="bound") do={
:set t ($t . "\r\n" . [/ip dhcp-server lease get $i status] . "-" . [/ip dhcp-server lease get $i mac-address])
}
}
:put $t
}
Очень даже интересное начинание. Оставлю здесь для возможных идей со стороны сообщества. Подкидывайте, кому что придет в голову.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 57
- Зарегистрирован: 16 май 2013, 11:21
начинание отличное, а вот продолжение :
Скрипт считает количество подключенных клиентов к хотспот за один день. Дозаписывает их в файл вместе с маками устройств(за каждый день). Каждый последний день месяца отправляет отчет(в виде тхт файла) на мыло двум адресатам.
Скрипт запускает в 20.00, когда хотспот уже неактивен(с 8 до 20). в хотспот "триал уптайм резет" настроен так(13 часов), что скрипт успевает сработать до того как юзеры с хотспот за день пропадут. На следующий день посторяется подсчет юзеров за день работы и запись этого в файл будущего отчета. До того как первый раз запустить скрипт файл hotusers.txt должен быть создан в корне микротик(пустой).
Вид отчета:
Трабла може быть с ограничением в запись переменной ContentsFile в 4кб (если много клиентов), тогда файл нужно дополнять
ну и в хотспот в в "on login":
Код: Выделить всё
:local time [/system clock get time];
:local date;
:local day;
:local month;
:local year;
:local yeardiv;
:local yearmult;
:local leapyear;
:local lastday;
:local found;
:global counter;
:set date [system clock get date];
:set month [:pick $date 0 3];
:set day [:pick $date 4 6];
:set year [:pick $date 7 11];
:local hotusers "The time is - $date $time hotspot users: $counter";
:local macHotspot;
:foreach i in=[/ip hotspot user find] do={ :set macHotspot ($macHotspot . "\r\n" . [/ip hotspot user get $i mac-address])};
:local ContentsFile [/file get hotusers.txt contents];
/file set [/file find name=hotusers.txt] contents="$ContentsFile \r\n $hotusers $macHotspot \r\n";
:set counter 0;
:set yeardiv ($year / 4);
:set yearmult ($yeardiv * 4);
:if ([$yearmult] = $year) do={ :set leapyear true } else={ :set leapyear false }
:if ([$month] = "jan") do={ :set lastday 31 }
:if ([$month] = "feb") do={
:if ($leapyear = true) do={ :set lastday 29 }
:if ($leapyear = false) do={ :set lastday 28 } }
:if ([$month] = "mar") do={ :set lastday 31 }
:if ([$month] = "apr") do={ :set lastday 30 }
:if ([$month] = "may") do={ :set lastday 31 }
:if ([$month] = "jun") do={ :set lastday 30 }
:if ([$month] = "jul") do={ :set lastday 31 }
:if ([$month] = "aug") do={ :set lastday 31 }
:if ([$month] = "sep") do={ :set lastday 30 }
:if ([$month] = "oct") do={ :set lastday 31 }
:if ([$month] = "nov") do={ :set lastday 30 }
:if ([$month] = "dec") do={ :set lastday 31 }
:if ([$lastday] = $day) do={
:local body "$date $time hotspot report";
:local smtpserv [:resolve "smtp.yandex.ru"];
:local email "user@yandex.ru";
:local pass 123456;
/tool e-mail send server=$smtpserv port=587 user=$email password=$pass start-tls=yes to="user1@i.com" cc="user2@qwe.qwe.com" from=$email subject="Mikrotik hotspot report" body="$body" file="hotusers.txt";
delay 6;
/file remove hotusers.txt;
/file print file=hotusers.txt;
delay 6;
/file set hotusers.txt contents=""}
Скрипт считает количество подключенных клиентов к хотспот за один день. Дозаписывает их в файл вместе с маками устройств(за каждый день). Каждый последний день месяца отправляет отчет(в виде тхт файла) на мыло двум адресатам.
Скрипт запускает в 20.00, когда хотспот уже неактивен(с 8 до 20). в хотспот "триал уптайм резет" настроен так(13 часов), что скрипт успевает сработать до того как юзеры с хотспот за день пропадут. На следующий день посторяется подсчет юзеров за день работы и запись этого в файл будущего отчета. До того как первый раз запустить скрипт файл hotusers.txt должен быть создан в корне микротик(пустой).
Вид отчета:
The time is - apr/01/2015 20:01:00 hotspot users: 10
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
The time is - apr/02/2015 20:01:00 hotspot users: 7
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ:ЧЧ
Трабла може быть с ограничением в запись переменной ContentsFile в 4кб (если много клиентов), тогда файл нужно дополнять
Код: Выделить всё
ip dhcp-server lease print terse file="1.txt" append
Код: Выделить всё
ну и в хотспот в в "on login":
Код: Выделить всё
:global counter;
:set counter ($counter + 1);
:log info "number of logged users: $counter";