分享一个dhcp排序的语句
这个语句是手动执行,不建议定时。
假设dhcp是 192.168.88.101-192.168.88.199
当,启用了 dhcp动态转静态,
我发现,ip不是连续的。
所以,写了这个,实现,dhcp排序
#开始
{
:local aaa
:local eee
:local A 2
#
:foreach bbb in= do=\
{:set aaa
:set eee
:put $aaa
:put $eee
/ip dhcp-server lease set $bbb address=("192.168.88.". $A)
:set A($A+1)
}
#
}
#
下面是,
dhcp动态转静态,
#
#
{
:foreach ccc in= do=\
{/ip dhcp-server leasemake-static $ccc;/ip dhcp-server lease set $ccc comment="0"}
}
#以上 server="dhcp088"可以不写,或者根据自己的修改
# 这个语句,我是定时执行,每8小时执行一次
本帖最后由 cspm333 于 2020-6-26 12:13 编辑
dhcp server分發ip給裝置時,範圍是pool決定的。
所以pool的範圍若只小到給1個ip時,那裝置配發ip時一定是給這個限定ip。
所以當給裝置ip後,再準備新的pool(單個ip)給下個裝置即可。
因準備的pool是有進行排序的,所以dhcp server給的ip也是會跟著排序。
#假設pool(name=dhcp)的範圍希望落在192.168.11.100-192.168.11.150,
先將/ip pool(name=dhcp)的ip範圍定為192.168.11.100(單個ip)
:local change no
:local pool
:local lease
:foreach i in= do={:set lease "$lease,$"}
:local arp
:foreach i in= do={:set arp "$arp,$"}
:while ([:find [:toarray $lease] $pool]>=0 || [:find [:toarray $arp] $pool]>=0) do={
:set change yes
:set pool ($pool+1)
:if ($pool>192.168.11.150) do={:set pool 192.168.11.100}
}
:if ($change=yes) do={/ip pool set dhcp ranges=$pool}
大家都挺闲的怎么分配IP 都要严格控制了
{
:local roshs ""
:for iii from=101 to=199 do={
:set roshs ($roshs."192.168.11.".$iii.",")
}
:set roshs [:pick $roshs 0 ([:len $roshs]-1)]
/ip pool set dhcp ranges=$roshs
}
本帖最后由 xuxi3201 于 2020-6-26 19:53 编辑
cspm333 你的语句 cpu利用率太高。你是每次dhcp都要执行。
我的,动态转静态8小时一次。
删除5天没有上线的ip,24小时执行一次。
这个贴说的 重新排序,每天23点执行一次。 关于转静态的,为什么不用lease-script? 简单高效
页:
[1]