Make Automatic static dhcp-leases

Part-1 Create automatic Static dhcp Leases

Written by:BrasDeutscher,PA,Brazil

Tested RouterOS v637rc27

{

If You not run Hotspot than You can set Your own FlatRate below example "1m/10m"

If no leaf it in blanc, do nothing below

:global r ""

\

Enter the dhcp server name here

:global sv "1"

\

Enter your lease Validity Number here, after this the unused lease will be removed

:global l "6"

Enter the Validity letter here, example m or h or d, my default set it 6h

:global lx "h"

!!-- The Number in comments is the number of already assigned Leases --!!

!!-- PLEASE CHANGE NOTHING MORE BELOW --!!

:global ip 0.0.0.1
:global ipx
:global ipy
:global mac F1:F1:F1:F1:F1:F1
:global macx
:global lt 10m1s
:global gc
:global cc
:global sc
:global mks
:global a
:global a1
:global date [/system clock get date ]
:global la ("$l" . "$lx")
:global laf
:global lafx
:set mks [/ip dhcp-server lease make-static [find where server="$sv" dynamic ]];
:if ([/ip dhcp-server lease find where server="$sv" address=$ip ! disabled ] = "" ) do={
/ip dhcp-server lease add block-access=yes mac-address=$mac address=$ip server="$sv" rate-limit="$r" comment=0;
}

Part-2 Create automatic Static dhcp Leases

:foreach s in=[/ip dhcp-server lease find where server="$sv" ! dynamic ! disabled ] do={
:if ([/ip dhcp-server lease get $s comment ] = "" ) do={
:set macx [/ip dhcp-server lease get $s mac-address ];
:set ipx [/ip dhcp-server lease get $s address ];
:set gc [/ip dhcp-server lease get [find where address=$ip ] comment ];
:set cc ("$gc"+"1" );
:set a [/ip dhcp-server lease set [find where server="$sv" mac-address=$macx address=$ipx ] use-src-mac=yes rate-limit="$r"
lease-time="$lt" address-lists="$date" comment="$cc" ];
:set sc [/ip dhcp-server lease set [find where address=$ip ] comment=$cc ];
:log warning ("Make Static Mac:$macx IP:$ipx on Server:$sv Rate-Limit:$r # $cc");
} else={

Part-3 Removing unused Leases

:set laf [/ip dhcp-server lease get $s last-seen ];
:set lafx [:len $laf ];
:if ("$lafx" > 5 ) do={
:if ("$laf" > "$la" ) do={
:set ipy [/ip dhcp-server lease get $s address ];
:set a1 [/ip dhcp-server lease remove [find where address=$ipy ]];
:log warning ("Liberate IP:$ipy nach $laf");
}}}}}



I am getting a syntax error in the script that is used in the 2nd part when running it on the latest RouterOS RC.