编辑
2025-11-13
网络
00
# A script that will be executed after a lease is assigned or de-assigned. Internal "global" variables that can be used in the script: # leaseBound - set to "1" if bound, otherwise set to "0" # leaseServerName - DHCP server name # leaseActMAC - active mac address # leaseActIP - active IP address # lease-agent-circuit-id - lease agent circuit ID # lease-agent-remote-id - lease agent remote ID # lease-hostname - client hostname # lease-options - an array of received options :local domain; :local hostname; :local dnsRecord; :local leaseRecord; :set domain "lan"; :set leaseRecord [/ip dhcp-server lease print as-value where server="$leaseServerName" address="$leaseActIP" dynamic=no]; :if (0 = $leaseBound || 0 = [:len $leaseRecord]) do={ :return 0; } :set hostname ([:pick $leaseRecord 0]->"comment"); :if (0 = [:len $hostname]) do={ :set hostname $"lease-hostname"; } :set hostname "$hostname.$domain"; /ip dns static remove [/ip dns static find address="$leaseActIP" name!="$hostname"] /ip dns static remove [/ip dns static find address!="$leaseActIP" name="$hostname"] :set dnsRecord [/ip dns static find address="$leaseActIP" name="$hostname"]; :if (0 = [:len $dnsRecord]) do={ /ip dns static add name="$hostname" address="$leaseActIP"; :return 0; }