Quantcast
Channel: MikroTik
Viewing all articles
Browse latest Browse all 16064

Scripting • Script DHCP Lease to Simple Queues don't work since update to 7.13

$
0
0
Hi,

i have used a DDNS script on mikrotik roouter OS9.6 for years but since the update to 7.13 the script don't work.

I hope someone can point out whats wrong or what changed in 7.13
Code:
# DHCP Lease to Simple Queues# 2014 Lonnie Mendez (lmendez@anvilcom.com)## Mikrotik RouterOS v6.9 /ip dhcp-server lease:foreach x in=[find] do={ # grab variables for use below:local leaseaddr ([get $x address]."/32"):local leasemacaddr [get $x mac-address]:local leasehostname [get $x host-name]:local leasename [get $x comment]:local queuecomment :local leaseinqueue false /queue simple:foreach y in=[find] do={ #grab variables for use below:local queuetargetaddr [get $y target]:set queuecomment [get $y comment] # Isolate information  from the comment field (MAC, Hostname):local queuemac [:pick $queuecomment 4 21]:local queuehostname [:pick $queuecomment 22 [:len $queuecomment]] # If MAC from lease matches the queue MAC then refresh the queue item:if ($queuemac = $leasemacaddr) do={# build a comment field:set queuecomment ("dtq," . $leasemacaddr . "," . $leasehostname) set $y target=$leaseaddr comment=$queuecomment:if ($leasename != "") do= {set $y name=($leasename . " (" . $leasemacaddr . ")")} else= {:if ($leasehostname != "") do= {set $y name=($leasehostname . " (" . $leasemacaddr . ")")} else= {set $y name=$leasemacaddr}}:set leaseinqueue true} else= {# if ip exists for this lease but mac is different then update mac/hostname and reset counter:if ($queuetargetaddr = $leaseaddr) do={# build a comment field:set queuecomment ("dtq," . $leasemacaddr . "," . $leasehostname) set $y comment=$queuecommentreset-counters $y:if ($leasename != "") do= {set $y name=($leasename . " (" . $leasemacaddr . ")")} else= {:if ($leasehostname != "") do= {set $y name=($leasehostname . " (" . $leasemacaddr . ")")} else= {set $y name=$leasemacaddr}}:set leaseinqueue true}}} # There was not an existing entry so add one for this lease:if ($leaseinqueue = false) do={# build a comment field:set queuecomment ("dtq," . $leasemacaddr . "," . $leasehostname)# build command:local cmd "/queue simple add target=$leaseaddr max-limit=100M/100M comment=$queuecomment":if ($leasename != "") do={ :set cmd "$cmd name=\"$leasename ($leasemacaddr)\"" } else= {:if ($leasehostname != "") do={:set cmd "$cmd name=\"$leasehostname ($leasemacaddr)\""} else= {:set cmd "$cmd name=\"$leasemacaddr\""}} :execute $cmd}} # Cleanup Routine - remove dynamic entries that no longer exist in the lease table/queue simple:foreach z in=[find] do={:local queuecomment [get $z comment]:local queue1stpart [:pick $queuecomment 0 3]:local queue2ndpart [:pick $queuecomment 4 21]:if ( $queue1stpart = "dtq") do={:if ( [/ip dhcp-server lease find mac-address=$queue2ndpart] = "") do={:log info ("DTQ: Removing stale entry for MAC Address - " . $queue2ndpart)remove $z}}}
[/quote]

Statistics: Posted by anassar26 — Sat Jan 06, 2024 12:15 am



Viewing all articles
Browse latest Browse all 16064

Trending Articles