Re: Помощь со скриптом.
Добавлено: 28 сен 2021, 13:43
Спасибо за совет, буду смотреть как сделать проверку по ip в адрес листе.
Форум поддержи и обмена опытом пользователей оборудования RouterBOARD и операционной системы RouterOS Латвийского производителя MikroTik
https://forummikrotik.ru/
Спасибо за совет, буду смотреть как сделать проверку по ip в адрес листе.
Код: Выделить всё
:local DNSList [/ip firewall address-list]
:local ListName "vpn_clients"
#:local DNSServers ( [ip dns get dynamic-servers], [ip dns get servers ], 8.8.8.8 )
#:foreach addr in $DNSList do={
# :foreach DNSServer in $DNSServers do={
# :do {:resolve server=$DNSServer $addr} on-error={:log debug ("failed to resolve $addr on $DNSServer")}
# }
#}
#/ip firewall address-list remove [find where list~$ListName]
:foreach i in=[/ip dhcp-server lease find host-name~"WP"] do={
:local bNew true
:local match false
:foreach i in=$DNSList do={
:if (:typeof [:find $i] >= 0) do={
:set $match true
}
}
:if ( $match ) do={
:local tmpAddress [/ip dhcp-server lease get $i address]
:if ( [/ip firewall address-list find ] = "") do={
:log debug ("added entry: $[/ip dhcp-server lease get $i address] IP $tmpAddress")
/ip firewall address-list add address=$tmpAddress list=$ListName
} else={
:foreach i in=[/ip firewall address-list find ] do={
:if ( [/ip firewall address-list get $i address] = $tmpAddress ) do={
:set bNew false
}
}
:if ( $bNew ) do={
:log debug ("added entry: $[/ip dhcp-server lease get $i address] IP $tmpAddress")
/ip firewall address-list add address=$tmpAddress list=$ListName
}
}
}
}
Код: Выделить всё
:local mydrop false;
:local myadd true;
:foreach i in=[/ip dhcp-server lease find host-name~"WP"] do={:set $ipaddr [/ip dhcp-server lease get $i address]; $ipaddr; :if ([/ip firewall address-list print value-list count-only where list=vpn_clients and address=$ipaddr]>0) do={$mydrop false} else={:put [/ip dhcp-server lease get $i address]};
:if ( [/ip firewall address-list find ] = "") do={ $myadd true} else={:do {/ip firewall address-list add list=vpn_clients address=[/ip dhcp-server lease get $i address]}}};