找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4253|回复: 0

[脚本] 拨号接口重复IP地址检测自动修复

[复制链接]
发表于 2012-4-11 19:17:48 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 arainbow 于 2012-4-11 19:51 编辑

我家用的是ros3.30,据搜索高版本也有这样的问题。在外面时经常访问家里的ROS、电脑什么的。
按需拨号的接口如ppp,pppoe,pptp,l2tp等等,在拨号频繁和网络情况复杂时,有时会出现这样的情况,接口具有了两个IP地址,这样就不通了,禁用接口也不行,必须手工删除掉该接口上的所有IP地址,禁用再启用,才能继续正常工作。而且一个拨号接口出现这种情况,通过会使得所有拨号接口也出现这种情况,造成不能上网正常工作什么的。若需要人工处理,人又不在,网络又不通,真是麻烦。所以我写了个脚本来解决,可以放到计划里每间隔几分钟执行一次,我是设5分钟。
也可以设置发现有重复IP后,自动重启ROS,ROS的重启速度还是很快的!

我做软件多年了,这个小脚本不费什么事,贡献给大家!
请大家支持!


脚本如下:

#解决按需拨号接口有时会有重复IP地址,导致不能使用的问题

:local dlist
:local ilist
:local aitem
:local i
:local j
:local reboot
:set reboot false
#查找所有动态IP地址
:set dlist [/ip address find dynamic=yes];
#:log info $dlist;
#循环每个IP地址,计算每个接口下IP地址数量
:foreach i in=$dlist do={
  :set aitem [/ip addr get $i interface]

  :set ilist [/ip addr find interface=$aitem]
#IP地址数量大于1,删除IP地址,禁用并重新启用接口
  :if ([:len $ilist] > 1) do={
    :set reboot true
    :log info $aitem;
#移除重复IP地址
    :foreach j in=$ilist do={/ip addr remove $j}
#禁用并重新启用接口
    /interface disable $aitem
    /interface enable $aitem
  }
};
#可以自动重启ROS,若用不到重启请注解
:if (reboot) do={:log info "Reboot!!";;/sys reboot} else={:log info "Donot reboot"}
routeros
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 07:01 , Processed in 0.040216 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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