自由的生活_软路由论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 205|回复: 6

[基础] 分享一个dhcp排序的语句

[复制链接]
发表于 2020-6-26 08:33:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x

这个语句是手动执行,不建议定时。
假设dhcp是 192.168.88.101-192.168.88.199
当,启用了 dhcp动态转静态,
我发现,ip不是连续的。
所以,写了这个,实现,dhcp排序
#开始
{
:local aaa
:local eee
:local A 2
#
:foreach bbb in=[/ip dhcp-server lease find server="  dhcp088" last-seen<1d comment ="0"] do=\
{:set aaa [/ip dhcp-server lease get $bbb comment]
:set eee [/ip dhcp-server lease get $bbb address]
:put $aaa
:put $eee
/ip dhcp-server lease set $bbb address=("192.168.88.". $A)
:set A  ($A+1)
}
#
}
#

下面是,
dhcp动态转静态,
#
#
{
:foreach ccc in=[/ip dhcp-server lease find server="  dhcp088" dynamic=yes] do=\
{/ip dhcp-server lease  make-static $ccc;/ip dhcp-server lease set $ccc comment="0"}
}

#以上 server="  dhcp088"  可以不写,或者根据自己的修改
# 这个语句,我是定时执行,每8小时执行一次
routeros
发表于 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 [/ip pool get dhcp ranges]

:local lease
:foreach i in=[/ip dhcp-s lease find] do={:set lease "$lease,$[/ip dhcp-s lease get $i address]"}

:local arp
:foreach i in=[/ip arp find complete] do={:set arp "$arp,$[/ip arp get $i address]"}

: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}


2020-06-26 11-54-57 的螢幕擷圖.png

routeros
发表于 2020-6-26 18:46:57 | 显示全部楼层
大家都挺闲的怎么分配IP 都要严格控制了

  1. {
  2. :local roshs ""
  3. :for iii from=101 to=199 do={
  4. :set roshs ($roshs."192.168.11.".$iii.",")
  5. }
  6. :set roshs [:pick $roshs 0 ([:len $roshs]-1)]
  7. /ip pool set dhcp ranges=$roshs
  8. }

复制代码
routeros
 楼主| 发表于 2020-6-26 19:25:04 | 显示全部楼层
本帖最后由 xuxi3201 于 2020-6-26 19:53 编辑

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

点评

不然的話每一次dhcp-server運作後,pool直接+1即可,CPU負載可以省很多...但這樣沒問題嗎?  发表于 2020-6-27 23:54
因為我覺得判斷出ip目前有無使用很重要,不管是dhcp lease裡有的或是裝置網卡裡有手動指定的。  发表于 2020-6-27 23:49
routeros
发表于 半小时前 | 显示全部楼层
关于转静态的,为什么不用lease-script? 简单高效
routeros
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由论坛 ( 渝ICP备15001194号-1,渝公网安备 50011602500124号 )

GMT+8, 2020-7-8 17:38 , Processed in 0.132735 second(s), 26 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表