Страница 1 из 1

Включение/выключение PoE на порту при появлении определенного IP

Добавлено: 15 апр 2021, 15:51
iAHTOH
Добрый день уважаемые.
Помогите накидать скрипт который включает и выключает PoE на определенном порту, при появлении в сети определенного, статического IP адреса.

Начну с того для чего мне это нужно: На даче есть RBSXTR - это LTE тарелка с 2-мя LAN портами.
По первому порту получаю питание и раздаю инет внутри помещения (там тоже микротик с WIFi).
По второму порту я питаю WiFi AP которая раздает инет на улицу (во дворе).
Так вот, когда меня нет на даче, мне не нужна внешняя WiFi AP, только внутренняя для обеспечения работы всякой мелочью контроля умного дома.
Хочется что бы при появлении меня на даче, а это можно определить когда телефон зарегистрируется в домашней сети (/ip dhcp-server lease> print - STATUS - bound , включался порт PoE внешней точки доступа. И отключался когда закончится LAST-SEEN станет равным (Expires After) 0)
Как то так.
Прошу помочь с написанием. Заранее спасибо!
 Фото для понимания:
Отключать нужно AP metal/ Та что выше тарелки стоит.
Изображение
ЗЫ С вашей помощью, вот что вышло:
Первый вариант скрипта

Re: Включение/выключение PoE на порту при появлении определенного IP

Добавлено: 15 апр 2021, 20:56
podarok66
Вот, давно как-то писал, было интересно. Сейчас, конечно интереса нет, но скрипт остался :-)
https://podarok66.livejournal.com/14211.html
Переделаете для своих нужд, будет работать. Там есть и вариант с ARP ( не очень мне нравится, имеет приличную инерционность), и вариант с парсингом логов. Этот работает на одной из машинок до сих пор.

Re: Включение/выключение PoE на порту при появлении определенного IP

Добавлено: 16 апр 2021, 07:56
iAHTOH
Спасибо за наводку. Буду пробовать.

Re: Включение/выключение PoE на порту при появлении определенного IP

Добавлено: 16 апр 2021, 19:46
iAHTOH
Во общем вот что у меня получилось:

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

:local StaticIP 10.16.87.14;                                                                                                  
:local Interface ether2;                                                                                                      
:local StatusPoE ([/interface ethernet poe monitor $Interface once as-value ]->"poe-out");                                    
:local addressAct false;                                                                                                      
       :foreach i in=[/ip dhcp-server lease find] do={                                                                               
               :if ([/ip dhcp-server lease get $i active-address]=$StaticIP ) do={                                                   
                :set $addressAct true 
                 }  
        }
:if ( $addressAct ) do={
   :if ($StatusPoE="off") do={
       :interface ethernet poe set $Interface poe-out=auto-on;
    }
 } else={ 
   :if ($StatusPoE!="off") do={
       :interface ethernet poe set $Interface poe-out=off;
    }
Скрипт записывается не в стандартную секцию System-Script, а в IP-DHCP Server-Ваш DHCP и там есть секция Lease Script
Это дает вызывать его не по шедулеру, а только тогда когда появляются новые IIP или наоборот освобождаются.
Что собственно мне и нужно было.
Lease Time выставил на 1 час. И теперь когда я приеду на дачу, у меня влючится уличный WiFi, а когда уеду выключится максимум через час.
Дальше скрипт буду еще пилить, что бы можно было не 1 IP адрес подставить, а целый список. Потому что не только я могу приехать, а к примеру жена.

Re: Включение/выключение PoE на порту при появлении определенного IP

Добавлено: 19 апр 2021, 11:34
podarok66
Мне вариант с lease не нравится по тем же причинам, что и ARP - большая инерционность. А логи, они достаточно оперативно выскакивают. Ну да ладно, каждому свой салат. Вот механизм отключения в варианте с несколькими мас-адресами инициаторами нужно продумывать. Там есть свои подводные камни... Дерзайте, может и выйдет что-то рабочее.