Примерный код скрипта, вдруг кому то понадобится, потом адаптируете под себя.
:global checkDuplicateL2tpUsers do={
:local l2tpServerBindings [/interface l2tp-server server get value-name=sessions]
:local activeUsers [:toarray ""]
# Собираем список пользователей с активными Server Binding
:foreach binding in=$l2tpServerBindings do={
:local user ($binding->"user")
:if ([:len $user] > 0) do={
:set ($activeUsers->([:len $activeUsers])) $user
}
}
# Проверяем все L2TP-интерфейсы
:foreach l2tpIf in=[/interface l2tp-client find] do={
:local ifName [/interface l2tp-client get $l2tpIf name]
:local ifUser [/interface l2tp-client get $l2tpIf user]
:local ifDynamic [/interface l2tp-client get $l2tpIf dynamic]
:local ifDisabled [/interface l2tp-client get $l2tpIf disabled]
# Если интерфейс динамический (DR) и пользователь уже есть в Server Binding
:if ($ifDynamic = true && $ifDisabled = false && [:typeof $ifUser] = "str" && [:len $ifUser] > 0 && [:find $activeUsers $ifUser] != nil) do={
:log info ("L2TP duplicate user found - removing dynamic connection: ".$ifName." user: ".$ifUser)
/interface l2tp-client remove $l2tpIf
}
}
}
# Добавляем скрипт в системные скрипты
/system script add name=checkDuplicateL2tpUsers source="$checkDuplicateL2tpUsers" policy=ftp,reboot,read,write,policy,test,winbox,password,sensitive
# Создаем триггер для выполнения скрипта при добавлении нового L2TP-интерфейса
/system scheduler add name="Check L2TP Duplicates" start-time=startup on-event="/system script run checkDuplicateL2tpUsers;"
/system scheduler add name="Check L2TP Duplicates Periodic" interval=5m on-event="/system script run checkDuplicateL2tpUsers;"