-
编写一个路由的监听程序5
电脑网络配置:
双网卡:C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 外网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::3d93:6c7b:53d1:767c%13 IPv4 地址 . . . . . . . . . . . . : 10.10.6.121 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 10.10.6.1 以太网适配器 内网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::ac8c:d6ba:9319:7c08%11 IPv4 地址 . . . . . . . . . . . . : 192.168.1.103 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1
现在已经有的双网卡同时访问内网和外网的解决方案:route delete 0.0.0.0 route add 0.0.0.0 mask 0.0.0.0 10.10.6.1 route add 10.0.0.0 mask 255.0.0.0 192.168.1.1
执行以上三个命令后正常的路由信息如下:IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 10.10.6.1 10.10.6.121 21 10.0.0.0 255.0.0.0 192.168.1.1 192.168.1.103 21 10.10.6.0 255.255.255.0 在链路上 10.10.6.121 276 10.10.6.121 255.255.255.255 在链路上 10.10.6.121 276 10.10.6.255 255.255.255.255 在链路上 10.10.6.121 276 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 306 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 306 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 306 192.168.1.0 255.255.255.0 在链路上 192.168.1.103 276 192.168.1.103 255.255.255.255 在链路上 192.168.1.103 276 192.168.1.255 255.255.255.255 在链路上 192.168.1.103 276 224.0.0.0 240.0.0.0 在链路上 127.0.0.1 306 224.0.0.0 240.0.0.0 在链路上 192.168.1.103 276 224.0.0.0 240.0.0.0 在链路上 10.10.6.121 276 255.255.255.255 255.255.255.255 在链路上 127.0.0.1 306 255.255.255.255 255.255.255.255 在链路上 192.168.1.103 276 255.255.255.255 255.255.255.255 在链路上 10.10.6.121 276 ===========================================================================
但有时候过十多分钟不进行操作,系统经常会多出一条0.0.0.0路由,不正常的路由信息如下一步:IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 10.10.6.1 10.10.6.121 21 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.103 20 10.0.0.0 255.0.0.0 192.168.1.1 192.168.1.103 21 10.10.6.0 255.255.255.0 在链路上 10.10.6.121 276 10.10.6.121 255.255.255.255 在链路上 10.10.6.121 276 10.10.6.255 255.255.255.255 在链路上 10.10.6.121 276 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 306 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 306 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 306 192.168.1.0 255.255.255.0 在链路上 192.168.1.103 276 192.168.1.103 255.255.255.255 在链路上 192.168.1.103 276 192.168.1.255 255.255.255.255 在链路上 192.168.1.103 276 224.0.0.0 240.0.0.0 在链路上 127.0.0.1 306 224.0.0.0 240.0.0.0 在链路上 192.168.1.103 276 224.0.0.0 240.0.0.0 在链路上 10.10.6.121 276 255.255.255.255 255.255.255.255 在链路上 127.0.0.1 306 255.255.255.255 255.255.255.255 在链路上 192.168.1.103 276 255.255.255.255 255.255.255.255 在链路上 10.10.6.121 276 ===========================================================================
问题:
每当系统多出一个0.0.0.0路由之后不能上网.需要再手工执行命令:route delete 0.0.0.0 route add 0.0.0.0 mask 0.0.0.0 10.10.6.1
目标:
双网卡同时访问内网和外网,并在系统有两个0.0.0.0的路由时自动将其删除,然后再添加一个需要的0.0.0.0跟路由.
现在我想用批处理文件route_listener.bat实现这个监听功能,代码如下:rem 程序说明 @echo off cls Title [窗口标题] ::begin----------------------------------- ::初始化变量 set filename=route.txt set file=%userprofile%\%filename% :begin route print 0.0.0.0*>route.txt echo 延时前! ping /n 5 127.0.0.1 >nul echo 延时后! for /f "tokens=1* delims=:" %%b in ('findstr /n .* %file%') do ( if "%%b"=="16" ( set ifo=%%c ::我的操作系统是windows7 ,下面的意思是判断route.txt中第16行第11到17个字符是否=='0.0.0.0',如果是就表明当前有两个0.0.0.0路 由,则执行下面的两个route命令 set flag="%ifo:~10,7%" if "%flag%"=="0.0.0.0" ( route delete 0.0.0.0 route add 0.0.0.0 mask 0.0.0.0 10.10.6.1 ) ) ) goto :begin
程序有错误,不知怎么更改方可完善.请各位不吝赐教!!!
2010年5月21日 16:18
目前还没有答案