Доброго времени суток.
Прошу помощи в написании такого скрипта:
В помещении находится приблизительно 600+ устройств, абонентских, им нужно подключиться к Access Point на базе микротика 493 кажется, сейчас не на работе просто, впитать настройку с сервера и отключиться, освободив место для следующих. На точке стоит ограничение в 60 абонентов. Больше серв за раз не обработает все равно, так что смысл нет расширять, проверено.
По сему хочу написать скрипт, который извлекал бы mac-adress ИЗ регистр листа и помещал бы его в fire-wall правило. Может кто-нибудь помочь, хотя с обозначением переменной, которая бы извлекала мак устройства из листа, дальше я бы справился. Благодарю.
Может есть другой выход без скрипта. И да 600+ это еще лайтовенько, есть помещения где более 4000, но до них я надеюсь будет использоваться хотя бы 10.
Ах да, еще эти устройства работают ТОЛЬКО на определенной частоте, разнос по частотам не вариант.
Очень благодарен буду за помощь и выложу готовый скрипт, отшлифованный так сказать, так как есть тестовый стенд.
Прошу Помощи
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1484
- Зарегистрирован: 23 ноя 2018, 11:08
- Откуда: Харкiв
60 устройств на точку это многовато. При зарегистрированных 100 клиентов 70 процентов времени в эфире вещают их маяки. Поэтому скорости очень низкие.
Не рекомендуют подключать больше 30 работающих.
Вариант добавить несколько точек и под Capsman. Точки разнести в пространстве и понизить мощность до нужных значений. Устройства ведь по помещению разнесены?
Команды можете посмотреть в этой теме viewtopic.php?f=14&t=8516
Не рекомендуют подключать больше 30 работающих.
Вариант добавить несколько точек и под Capsman. Точки разнести в пространстве и понизить мощность до нужных значений. Устройства ведь по помещению разнесены?
Команды можете посмотреть в этой теме viewtopic.php?f=14&t=8516
1-е Правило WiFi - Везде где только можно откажитесь от WiFi!
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!
Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!
Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Ну сам скрипт писать мне явно не очень хочется, а вот приём получения адреса из списка ... Предположим, что у вас есть список из 600 МАС-адресов в текстовом формате. Обязательным условием является сам список - каждый МАС с новой строки, никаких других знаков не приемлем. Дальше определяем количество устройств, которое будет в одном такте, например 15. И погнали
Вместо :put можно начинать работать с получаемыми значениями. Как-то так...
Но работать он будет ой долго...
А-а-а-а, перечитал стартовый пост. Так вы из аксцесс-листа хотите извлечь МАС-адреса? Принцип тот же. Вам нужны всего несколько активных адресов. Делаем весь лист disabled=yes и запускаем скрипт
Но надо прикручивать проверку на неполный такт, а то он завершается на первой половине цикла .... Из-за этого на последнем цикле скрипт вылетает и последние МАСи остаются включенными. Я не придумал, как обойти эту ерунду. Может кто-то и подскажет, тогда можно будет слепить полноценное решение.
А так, меняйте паузы между тактами, прикручивайте выполнение любых задач, всё должно отработать.
Код: Выделить всё
# Берём содержимое файла
:local con [/file get [find name=1.txt] contents];
# Определяем такт работы
:for r from=0 to=599 step=15 do={
# Осуществляем выборку МАС-адресов
:for n from=(0+$r) to=(14+$r) do={
:put [:pick $con (19 * $n) ([:find $con "\r\n"] + (19 * $n))];
}}
Но работать он будет ой долго...
А-а-а-а, перечитал стартовый пост. Так вы из аксцесс-листа хотите извлечь МАС-адреса? Принцип тот же. Вам нужны всего несколько активных адресов. Делаем весь лист disabled=yes и запускаем скрипт
Код: Выделить всё
:for r from=0 to=599 step=15 do={
:for n from=(0+$r) to=(14+$r) do={
/interface wireless access-list set disabled=no numbers=$n
};
:delay 5;
/interface wireless access-list set [find disabled=no] disabled=yes;
:delay 5;
}
А так, меняйте паузы между тактами, прикручивайте выполнение любых задач, всё должно отработать.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 10
- Зарегистрирован: 01 ноя 2019, 13:22
- Откуда: Новосибирск
Благодарю, но вы меня немного не поняли, у меня нет списка мак адресов, будь он у меня, все было бы проще. Его нужно извлечь из arp-таблицы подключенных устройств.podarok66 писал(а): ↑03 ноя 2019, 08:45 Ну сам скрипт писать мне явно не очень хочется, а вот приём получения адреса из списка ... Предположим, что у вас есть список из 600 МАС-адресов в текстовом формате. Обязательным условием является сам список - каждый МАС с новой строки, никаких других знаков не приемлем. Дальше определяем количество устройств, которое будет в одном такте, например 15. И погналиВместо :put можно начинать работать с получаемыми значениями. Как-то так...Код: Выделить всё
# Берём содержимое файла :local con [/file get [find name=1.txt] contents]; # Определяем такт работы :for r from=0 to=599 step=15 do={ # Осуществляем выборку МАС-адресов :for n from=(0+$r) to=(14+$r) do={ :put [:pick $con (19 * $n) ([:find $con "\r\n"] + (19 * $n))]; }}
Но работать он будет ой долго...
А-а-а-а, перечитал стартовый пост. Так вы из аксцесс-листа хотите извлечь МАС-адреса? Принцип тот же. Вам нужны всего несколько активных адресов. Делаем весь лист disabled=yes и запускаем скриптНо надо прикручивать проверку на неполный такт, а то он завершается на первой половине цикла .... Из-за этого на последнем цикле скрипт вылетает и последние МАСи остаются включенными. Я не придумал, как обойти эту ерунду. Может кто-то и подскажет, тогда можно будет слепить полноценное решение.Код: Выделить всё
:for r from=0 to=599 step=15 do={ :for n from=(0+$r) to=(14+$r) do={ /interface wireless access-list set disabled=no numbers=$n }; :delay 5; /interface wireless access-list set [find disabled=no] disabled=yes; :delay 5; }
А так, меняйте паузы между тактами, прикручивайте выполнение любых задач, всё должно отработать.
ВАЖНО не из аксес листа, а из регистрэйшен листа WI-FI. То есть устройства мне заранее не известные.
-
- Сообщения: 10
- Зарегистрирован: 01 ноя 2019, 13:22
- Откуда: Новосибирск
Cпасибо это интересноCa6ko писал(а): ↑01 ноя 2019, 19:24 60 устройств на точку это многовато. При зарегистрированных 100 клиентов 70 процентов времени в эфире вещают их маяки. Поэтому скорости очень низкие.
Не рекомендуют подключать больше 30 работающих.
Вариант добавить несколько точек и под Capsman. Точки разнести в пространстве и понизить мощность до нужных значений. Устройства ведь по помещению разнесены?
Команды можете посмотреть в этой теме viewtopic.php?f=14&t=8516
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Да какая разница, откуда извлекать-то? Вот отдайте команду в терминале и посмотрите, что у вас выйдет...ZeaZee писал(а): ↑03 ноя 2019, 15:20 Благодарю, но вы меня немного не поняли, у меня нет списка мак адресов, будь он у меня, все было бы проще. Его нужно извлечь из arp-таблицы подключенных устройств.
ВАЖНО не из аксес листа, а из регистрэйшен листа WI-FI. То есть устройства мне заранее не известные.
Код: Выделить всё
:for y from=0 to=30 do={:put [/ip arp get number=$y mac-address ]}
Код: Выделить всё
:foreach in=[/ip arp find disabled=no] e do={:put [/ip arp get $e mac-address]}
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 10
- Зарегистрирован: 01 ноя 2019, 13:22
- Откуда: Новосибирск
Прошу прощения, но там и тона притензии не было, я начал отвечать не дочитав до конца, вы мне очень помогли, думаю справлюсь дальше, как доделаю скину скрипт с пояснениями.podarok66 писал(а): ↑03 ноя 2019, 17:27Да какая разница, откуда извлекать-то? Вот отдайте команду в терминале и посмотрите, что у вас выйдет...ZeaZee писал(а): ↑03 ноя 2019, 15:20 Благодарю, но вы меня немного не поняли, у меня нет списка мак адресов, будь он у меня, все было бы проще. Его нужно извлечь из arp-таблицы подключенных устройств.
ВАЖНО не из аксес листа, а из регистрэйшен листа WI-FI. То есть устройства мне заранее не известные.Или так, тогда без ошибки выйдет в концеКод: Выделить всё
:for y from=0 to=30 do={:put [/ip arp get number=$y mac-address ]}
Ну и порежьте результат, как вам надо. Мы же не в бюро заказов, направление есть, дальше самостоятельно.Код: Выделить всё
:foreach in=[/ip arp find disabled=no] e do={:put [/ip arp get $e mac-address]}
Спасибо огромное, извините за недопонимание.
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Да я вроде как и не обижался У меня выходной, на улице ужас, родные кто в театре, кто в сети, вот я и занимаюсь не пойми чем. Но я пока не понял, как вы там совладаете с такими огромными таблицами. Вы скажите, сколько по времени занимает полная операция с одним устройством?
Кстати, с registration table я не могу проверить, у меня всё в доме через CAPsMAN управляется. Если надо из него извлечь, то тут легко.
Вот кстати пришла в голову идея, часть устройств отключать от сети на время, пока меня нет дома. А определять, дома ли я, можно именно по этой таблице (wifi в телефоне включен всегда)
Кстати, с registration table я не могу проверить, у меня всё в доме через CAPsMAN управляется. Если надо из него извлечь, то тут легко.
Вот кстати пришла в голову идея, часть устройств отключать от сети на время, пока меня нет дома. А определять, дома ли я, можно именно по этой таблице (wifi в телефоне включен всегда)
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Моё любопытство мне не давало спать Я всё же хотел понять логику всего этого дела. Чтобы и выбирало МАС-адреса, и формировало пулы по заданному количеству адресов, и завершало скрипт нормально. Что в действительности будет делать скрипт, мне параллельно, а вот сама логика мне весь отдых испортила. ТС, мои поздравления, давно мне не было так интересно
Итак, попробую пояснить ход работы скрипта:
Итак, попробую пояснить ход работы скрипта:
Код: Выделить всё
# Создаём переменную в виде массива, по моему мнению, очень подходяще для данного случая
global t [:toarray []];
# Наполняем массив. Тут важно понять, что неважно, откуда мы его наполним, главное понять сам принцип наполнения.
# Если действительно упёрлись в таблицу регистрации, то там строка будет типа /interface wireless registration-table find interface=bridge
# и вторая /interface wireless registration-table get $i mac-address . Мне просто не на чем было протестировать скрипт именно в этом месте
# поэтому брал оттуда, где у меня есть "жертвы" моих экспериментов
:foreach i in=[/ip arp find interface=bridge] do={
:local y [/ip arp get $i mac-address];
set t ($t, $y);
}
# Это отладочная команда, чтобы видеть, что информация у меня загружена в массив
#:put $t;
# Куча переменных. Начало отсчёта, у Микротиков начинается с нуля
:local nt 0;
# Количество элементов в массиве
:local ln [:len $t];
# Количество МАС-адресов в одном такте
:local stp 15;
# Номер последнего элемента массива
:local ky ($ln - 1);
# Количество тактов, в которых количество элементов будет $stp
:local ks ($ln / $stp);
# Количество элементов, обрабатываемых за $ks тактов
:local lnnew ($ks * $stp);
# Номер последнего элемента в $lnnew
:local ost ($lnnew - 1);
# начинаем обрабатывать, делим массив на такты и в каждом такте обрабатываем
:for nb from=$nt to=$ost step=$stp do={
:for gb from=$nt to=($stp - 1) do={
# Это именно то место, где должны быть команды, которые выполняются в отношении элементов массива,
# которые собраны в одном такте, например включить для них доступ.
:put ($t->$gb);
};
# Здесь команда для всего актуального такта, например :delay 100;
:put "Next";
# Если затем требуется ещё какие-то команды для каждого элемента, создаём аналогичный блок
# :for gb from=$nt to=($stp - 1) do={
# :put ($t->$gb);
# };
}
# Осталось обработать остатки массива. Принципы прописывания команд те же самые, включая сказанное о дополнительном блоке
:for nbost from=$lnnew to=$ky do={
:put ($t->nbost);
}
:put "It's stop";
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...