xuxi3201 发表于 2020-6-26 08:33:29

分享一个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 11:59:10

本帖最后由 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}




47771885 发表于 2020-6-26 18:46:57

大家都挺闲的怎么分配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:25:04

本帖最后由 xuxi3201 于 2020-6-26 19:53 编辑

cspm333 你的语句 cpu利用率太高。你是每次dhcp都要执行。
我的,动态转静态8小时一次。
删除5天没有上线的ip,24小时执行一次。
这个贴说的 重新排序,每天23点执行一次。

kkgogo 发表于 2020-7-8 16:51:12

关于转静态的,为什么不用lease-script? 简单高效
页: [1]
查看完整版本: 分享一个dhcp排序的语句