注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

青新的博客

记录工作点滴 分享学习快乐 享受家庭温馨

 
 
 

日志

 
 

linux网关路由器双路出口自动切换脚本  

2007-05-24 09:28:39|  分类: Linux学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


博主原创,欢迎转载,转载请注明出处!

公司网关路由器基于linux fedora 5系统,两条internet访问线路一条为电信10M光纤,另一条为电信2M ADSL备援连接D-link宽带路由器,以往当光纤出现故障时需自行手动切换,跑去机房,拔下连接光纤的网线,换上连接至D-link宽带路由器的网线,重新设置IP及网关,一系列操作下来,可能光纤线路也恢复正常了,费时费力不说,还影响公司网络的正常访问。问题急于解决。研究许久,编写出了一个网关自动切换的shell脚本,自运行以来,总体感觉很满意,每次网络线路出现故障都能及时自动切换,如有博友恰来经过寒舍,欢迎一起测试。

拓扑图如下:

linux网关路由器双路出口自动切换脚本 - 青新 - 青新的博客

 

[root@router firewall]# cat auto_switch_gw_fiber_adsl.sh 
       #!/bin/bash

if [ ! -f "/var/log/auto_switch_gw.log" ]; then

   touch /var/log/auto_switch_gw.log

fi

if [ ! -d "/var/www/html/log" ]; then

   mkdir /var/www/html/log

fi

OWNPATH=/root/firewall

ROOTMAIL=`cat $OWNPATH/rootmail.txt`

WAN_IP=`ifconfig eth0 | grep inet | cut -d : -f 2 | cut -d " " -f 1`

WAN_GATEWAY_IP="58.211.xxx.1"

 

if [ "`ip route|grep default |awk {'print $3'}`" = "58.211.xxx.1" ]; then

   line="fiber"

else

   line="adsl"

fi

 

while true;

do

  result=`ping -c 4 58.211.xxx.1 |grep transmitted |awk '{print $4}'`

  if [ $result -eq 0 ] && [ "$line" = "fiber" ]; then

     DATE=`date +%Y-%m-%d-%T`

     echo -e  "$DATE\t\c" >>/var/log/auto_switch_gw.log

     echo -e "switch to adsl\n\n" >>/var/log/auto_switch_gw.log

     route del default gw 58.211.xxx.1

     route add default gw 192.168.88.1 

     iptables -t nat -D POSTROUTING -o eth0 -j SNAT --to 58.211.xxx.2

     iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 192.168.88.254

     line="adsl"

     echo -e  "Auto switch default gateway to adsl\n\n$DATE" |mail -s "Switch gateway to adsl" $ROOTMAIL

     #mail c0242@chenbro.com.sh -s "auto_switch_gw_to_adsl" < /var/log/auto_switch_gw.log

  elif [ $result -eq 4 ] && [ "$line" = "adsl" ]; then

     DATE=`date +%Y-%m-%d-%T`

     echo -e  "$DATE\t\c" >>/var/log/auto_switch_gw.log

     echo -e "switch to fiber\n\n" >>/var/log/auto_switch_gw.log

     route del default gw 192.168.88.1       

     route add default gw 58.211.xxx.1

     iptables -t nat -D POSTROUTING -o eth2 -j SNAT --to 192.168.88.254

     iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 58.211.xxx.2

     line="fiber"

     echo -e  "Auto switch default gateway to fiber\n\n$DATE" |mail -s "Switch gateway to fiber" $ROOTMAIL

 fi

  cp -u /var/log/auto_switch_gw.log /var/www/html/log/auto_switch_gw.txt

  sleep 30s

done

linux网关路由器双路出口自动切换脚本 - 青新 - 青新的博客

  评论这张
 
阅读(877)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017