Поиск не авторизованных WiFi устройств

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

Написал скрипт для поиска не авторизованных WiFi устройств.
Поиск происходит по следующему алгоритму:
1) Поиск подключённых устройств;
2) Сравнение найденных устройств в списке dhcp lease;
3) В случае, если найдено устройство с dynamic записью dhcp, или устройство, не запросившее IP адрес, то появляется уведомление;
Иными словами, чтобы не было уведомлений, нужно каждое устройство перевести в static запись dhcp.

Баги.
1) При первом запуске происходит двойная проверка и двойное уведомление (Спасибо криворуким разработчикам скриптового языка);
2) Очень редко может произойти так, что устройство подключится к сети, но не успеет запросить IP адрес и система посчитает устройство как не запросившее адрес.

Код для CAPsMAN.
 Читаемый вид

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

:if ([:len $MACLIST] = 0) do={ :global MACLIST {""}; };

:foreach i in=[/caps-man registration-table find] do={
   :local USERObj [/caps-man registration-table get $i];
   
   :if (($MACLIST->($USERObj->"mac-address")) != true) do={
      :local DHCPID [/ip dhcp-server lease find mac-address=$USERObj->"mac-address"];
      :local String "";
      
      :if ($DHCPID = "") do={
         :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: ip address not issued.");
      };
      
      :if ($DHCPID != "") do={
         :local DHCPObj [/ip dhcp-server lease get $DHCPID];
         
         :if ($DHCPObj->"dynamic" = true) do={
            :set String ("[Wi-Fi] Unknown device connected: inter: " . $USERObj->"interface" . ", " . $USERObj->"rx-signal" . "dBm, mac: " . $USERObj->"mac-address" . ", host: " . $DHCPObj->"host-name" . ", ip: " . $DHCPObj->"active-address" . ".");
         };
      };
      
      :if ($String != "") do={
         :set ($MACLIST->($USERObj->"mac-address")) true;
         :log error $String;
         
      };
   };
};

 Сжатый код создания готового планировщика

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

/system scheduler add interval=1m name=WiFiCheck on-event=":if ([:len \$MACLIST] = 0) do={ :global MACLIST {\"\"}; };:foreach i in=[/caps-man registration-table find] do={:local USERObj [/caps-man registration-table get \$i];:if ((\$MACLIST->(\$USERObj->\"mac-address\")) != true) do={:local DHCPID [/ip dhcp-server lease find mac-address=\$USERObj->\"mac-address\"];:local String \"\";:if (\$DHCPID = \"\") do={:set String (\"[Wi-Fi] Unknown device connected: inter: \" . \$USERObj->\"interface\" . \", \" . \$USERObj->\"rx-signal\" . \"dBm, mac: \" . \$USERObj->\"mac-address\" . \", host: ip address not issued.\");};:if (\$DHCPID != \"\") do={:local DHCPObj [/ip dhcp-server lease get \$DHCPID];:if (\$DHCPObj->\"dynamic\" = true) do={:set String (\"[Wi-Fi] Unknown device connected: inter: \" . \$USERObj->\"interface\" . \", \" . \$USERObj->\"rx-signal\" . \"dBm, mac: \" . \$USERObj->\"mac-address\" . \", host: \" . \$DHCPObj->\"host-name\" . \", ip: \" . \$DHCPObj->\"active-address\" . \".\");};};:if (\$String != \"\") do={:set (\$MACLIST->(\$USERObj->\"mac-address\")) true;:log error \$String;};};};"


Код для одиночной точки.
{Скоро}


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
denisimmon
Сообщения: 1
Зарегистрирован: 08 апр 2017, 18:16

И как его использовать непрофессионалу? :nez-nayu:


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Если честно, то "непрофессионалу" лучше никак не использовать то, что он не понимает. Не стоит прикручивать непонятный вам скрипт "лишь бы было..." Садитесь, почитайте про скриптовый язык RouterOs, там дел на один вечер, если просто по верхушкам пробежаться. А уж потом пройдитесь по телу скрипта и вам станет понятно, нужен ли он вам вообще.
И не стоит делить юзеров на профессионалов и непрофессионалов. То, что обсуждается здесь, способен освоить почти каждый. Нет тут заумных секретов. Может есть что-то непривычное, но тут ведь дело вашего терпения.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить