Хорошая идея. Может и кому-то понадобится это интересное решение. Есть 50 абонентов подключенные через простые  не управляемые swich-и. В роли сервера у нас Микротик. Всем раздается статический пул dhcp адресов, соответсвенно фиксированными мак адресами. Возникает проблема, когда кто то по неосторожности путает порты wan с lan на роутере. Так вот, немного уйдем от темы.  При личных наблюдениях данной проблемы я заметил такой нюанс, что 99,9% роутеров всех производителей мак адреса wan и lan портов отличаются последние две, а от начала до последних двух символов совпадают.  И я решил написать скрипт, который будет уведомлять о том, кто именно спутал порты.
вешаем на локальный интерфейс микротика dhcp-client, чтоб изнутри наш локальный интерфейс получал несанциональный ип по ошибке пользователя.
/ip dhcp-client add interface="Local" use-peer-dns="no" add-default-route="no" script="
  и поехали..
:local tturlASH "https://api.telegram.org/botхххххххх:хххххххххх/sendmessage\?chat_id=хххххх&text=";
:local ttmessage "obnarujen DHCP ip na lokalke";
:local a;
:local dhcpgw;
:local arpall;
:local fmac;
:local macfound;
:local b;
:local g;
:local h;
:local i;
:local c;
:foreach a in=[/ip dhcp-client find interface=Local] do={:set dhcpgw [/ip dhcp-client get $a gateway];/ping $dhcpgw count=5};
:foreach arpall in=[/ip arp find where address=$dhcpgw] do={:set fmac [/ip arp get $arpall mac-address];:set fmac [:pick $fmac 0 ([:len $fmac]-2)]};
:foreach macfound in=[/ip dhcp-server lease find mac-address~"$fmac"] do={
/ip dhcp-server lease set $macfound comment="dhcpfound";
:foreach b in=[/ip dhcp-server lease find comment="dhcpfound"] do={
:set g [/ip dhcp-server lease get $b address];
:foreach h in=[/ip firewall address-list find address="$g"] do={
:if ($h != "") do={
:set i [/ip firewall address-list get $h comment];
/tool fetch url="$tturlASH $ttmessage %0A%0ADHCP SERVER IP  --->  $dhcpgw %0A%0AADDRESS LIST --->   $i%0A%0ACLIENT IP  --->   $g" keep-result=no;
} else={
:log warning message="ip not address list";
}
}
}
} else={:log warning message="not find mac-address in leases..."};
подробнее о функциях  -->
ищем все что есть в Local, заносим в переменную dhcpgw  шлюз незванного ип, далее пингуем, чтоб было гарантированно что он динамически отобразится в арп.
:foreach a in=[/ip dhcp-client find interface=Local] do={:set dhcpgw [/ip dhcp-client get $a gateway];/ping $dhcpgw count=5};
далее узнаем узнаем мак адрес и обрезаем последние два символа.
:foreach arpall in=[/ip arp find where address=$dhcpgw] do={:set fmac [/ip arp get $arpall mac-address];:set fmac [:pick $fmac 0 ([:len $fmac]-2)]};
далее ищем совпадения в  lease с параметром ~ так как у нас обрезаны последние два символа.
в найденный результат заносим комент - dhcpfound, и извлекаем оттудо ип адрес уже пользовареля. Что и требовалось доказать! 
:foreach macfound in=[/ip dhcp-server lease find mac-address~"$fmac"] do={
/ip dhcp-server lease set $macfound comment="dhcpfound";
:set g [/ip dhcp-server lease get $b address];
но так быстро...
далее скрипт должен найти совпадение в  address-list по найденному ип, чтоб найти комент записи  в котором указаны инициалы пользователя, для подготовки отчета на телеграм.
помогите исправить ошибки которые я допустил.  у меня не работают комады  else={ ,
и еще не могу понять как правильно сравнивать данные внутри переменных .
например с посредством :if ($h != "")     я хотел бы указать то, что а вдруг мак адрес найден , а вот пользователь в адрес листе не найден, и то что если он не найден, не надо продолжать рабору скрипта, а надо с посредсвом else={  поменять подход и поиски в другом направлении, так как неккоторые пользоварели лежат в queue