Оставьте заявку

Текст сообщения:


Данная статья основана на материале. Наблюдение на WiFi потребителите с CAPsMAN и DUDE. Это презинтация правда на болгарском языке и в ней есть некоторые ошибки. (в частности на 23 страннице дан правильный варант скрипта, а далее идет не правильный). И некоторые моменты в ней вообще опущены.

 

И так. У Вас есть бесшевный Wi-Fi на Мкротиках под управлением контроллера CAPsMAN и для слежения за точкаими есть карта нарисованная в cистеме мониторинга The Dude, на ней нанесены эти точеки.

На центральном контроллере вы можете вывести

1. сколько точек в данный момент подключено к контроллеру

2. сколько клиентов подключено ко всем точкам одновлеменно.

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

В основном инструкциях по настройке CAPsMAN сказано зайдите в Wireless нажмите кнопку CAP, поставьте галочку Enabled, выберете интерфейсы,  выберете сертификат (если есть), и выберете Discovery Interface.  Для работы скрипта требуется требуется, чтобы Discovery Interface был пустым, а в CAPsMAN Addresses вы прописали IP адрес CAPsMAN контроллера. Это нужно для того, чтобы в блоке CAPsMAN->Remote CAP в столбце Address, вывелись IP адреса (а иначе там выводятся МАС-адреса).

Также нужно, чтобы все точки имели собственный Identity (System -> Identity)

Далее нужно, чтобы в Provisioning установить Action в create dinamic enabled, а Name Format желательно в Identity. Это нужно, потому что когда автоматически создаются интерфейсы на контроллере он им в конце присваивает цифрув формате "-1" "-2". Для работы скрипта нужно, чтобы в конце интерфейса была бы или цифра 1 или цифра 2, другие не допустимы. Если вы в ручную настроили САР интерфейсы, то руками добавьте в конце "-1" "-2" (например "-1"  для 2GHz и "-2" для 5GHz). По этому же принципу возможно раширить функционал скрипта, для ситуации, если у Вас двухдиапазонные точки, а также есть гостевая и офисная сеть итого 4.

На этом подготовительная часть закончена.

Скрипт передает информацию в точку информацию с использованием ping пакетов разной длины и далнейший их обработкой на самой точке.

На CAPsMAN контроллере создаем новый скрипт, который будет обрабатывать и рассылать информацию на точки доступа.

# устанавливаю глобальные переменные
:global strCapID
:global strCapIP
:global strCapInterface
:global strSubInterface
:global strClients
:global intPingSize
:global intCount 0
# перебираем все радио интерфейсы
:foreach i in=[/caps-man radio find] do=
# добавляю накопительную переменную (ни на что не влияет просто проверка, на всякий случай)
:set $intCount ($intCount +1)
# получаю имя интерфейса
:set $strCapInterface ([/caps-man radio get $i interface])
# читаем индентификатор точки доступа
:set $strCapID ([/caps-man radio get $i remote-cap-identity])
# получаем ip адрес
:set $strCapIP ([/caps-man remote-cap get [find identity=$strCapID] address])
# убираем лишнее (маска сети) из адреса
:set $strCapIP ([:pick $strCapIP 0 [:find $strCapIP "/"]])
# получаем число зарегистрированных клиентов на интерфейсе
:set $strClients ([:len [/caps-man registration-table find interface=$strCapInterface]] )
# читаем цифру в конце имени интерфейса (номер
:set $strSubInterface ([:pick $strCapInterface ([:len $strCapInterface]-1)])
# высчитываем длину пакета
:set $intPingSize ($strSubInterface * 100 + $strClients)
#отправляем на точку один ping пакет соответствующей длины
/ping $strCapIP size=$intPingSize count=1 #выводим информацию в лог (необязательный пункт)
:log info ("_cap -" . $strCapInterface . " / sub -". $strSubInterface ." / cap id-" . $strCapID . " / cap ip - " . $strCapIP . " / clients-" . $strClients)

&#125  }