中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 有高手知道怎么以批处理做网关的自动切换吗?
作者:
标题: 有高手知道怎么以批处理做网关的自动切换吗? 上一主题 | 下一主题
ymtien
初级用户





积分 36
发帖 11
注册 2006-9-26
状态 离线
『楼 主』:  有高手知道怎么以批处理做网关的自动切换吗?

如果目前的连线网关(Gateway)192.168.1.2 断线了,能够侦测并自动切换到另一个网关192.168.1.3,当192.168.1.2的连线愎恢了能够再切换回去,维持网路的畅通,有人知道以批处理要如果实现呢?在linux平台上是很轻易可以做到的但windows上就难呀~
不知道有没有高手可以提供一下技术交流~感谢


在linux下可以用shell scripts轻易完成上述的功能:

环境说明:

两条 ADSL 线路: 伺服器使用 ADSL Router (A) 对外连线, LAN User 透过 Linux NAT 使用 ADSL Router (B) 对外连线.
当 ADSL Router (B) 断线时, Linux NAT 自动调整路由, 让 LAN User 改以 ADSL Router (A) 对外连线.
当 ADSL Router (B) 线路恢复时, Linux NAT 自动调整路由, 让 LAN User 再从 ADSL Router (B) 对外连线.

Linux Shell Script:

假设 ADSL Router (A) 使用 Hinet 线路; ADSL Router (B) 使用 APOL 线路

源代码:
---------------------------------------------------------------------------------------------------------

#!/bin/sh

if [ -n "`route -n | grep 0.0.0.0 | grep UG | grep 192.168.1.254`" ]; then
        line="apol"
else
        line="hinet"
fi

while true;
do
        ping -c 1 -t 255 210.200.211.225 > /dev/null
        if [ $? != 0 ] && [ $line == "apol" ]; then
                echo "change to hinet"
                route del default gw 192.168.1.254
                route add default gw 192.168.0.254
                route add -host 210.200.211.225 gw 192.168.1.254
                line="hinet"
        elif [ $? == 0 ] && [ $line == "hinet" ]; then
                echo "change to apol"
                route del default gw 192.168.0.254
                route add default gw 192.168.1.254
                route del -host 210.200.211.225 gw 192.168.1.254
                line="apol"
        fi
        sleep 10s
done
----------------------------------------------------------------------------------------------------------

行号说明:

03~07 以目前 Default Gateway 的设定判断对外使用线路
09 无穷回圈
11 ping APOL public DNS IP
12~17 如果 ping 失败 (网路不通) 而且目前使用 APOL 线路者, 切换至 Hinet 的线路
16 设定对 APOL public DNS IP 的路由, 下次再 ping 这个 IP 时会从 192.168.1.254 这个 Gateway ping 出去, 以得知 APOL 线路是否已恢复
18~23 已切换使用 Hinet 线路, 而 APOL 线路已恢复时的处理: 还原路由设定, 让 LAN User 转回使用 APOL 线路
25 Script 程序暂停 10 秒钟
---------------------------------------------------------------------------------------------------------

2006-11-29 07:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: