0 0

编写一个路由的监听程序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
目前还没有答案
Global site tag (gtag.js) - Google Analytics