arainbow 发表于 2012-4-11 19:17:48

拨号接口重复IP地址检测自动修复

本帖最后由 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 ;
#:log info $dlist;
#循环每个IP地址,计算每个接口下IP地址数量
:foreach i in=$dlist do={
:set aitem

:set ilist
#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"}
页: [1]
查看完整版本: 拨号接口重复IP地址检测自动修复