Board logo

标题: [网络连接] [已解决]批处理如何选择网卡,并添加dns,修改路由策略 [打印本页]

作者: jbcdidgosir    时间: 2013-2-27 23:24     标题: [已解决]批处理如何选择网卡,并添加dns,修改路由策略

本帖最后由 jbcdidgosir 于 2013-3-4 18:55 编辑

具体需求是这样的,我在公司里用OpenVPN翻公司墙,但是由于需要双网双待,所以需要设置路由测量,例如公司网络的网关是10.110.7.1,VPN获得的ip是192.168.1.2,那么我需要写的bat为
route delete 0.0.0.0 mask 0.0.0.0 10.110.7.1
route add 10.128.0.0 mask 255.128.0.0 10.110.7.1
同时给192.168.1.1网络添加一个10.110.4.4的dns(用公司的dns)

现在问题是:
1. 如果用批处理添加dns,一定要添加到192.168.1.1的网卡上.
2. 因为时常需要在不同的楼层办公,IP和网关都不同,例如10.110.7.1,或者10.110.8.1等,每次都要先查网关,然后再改批处理执行,太麻烦,能否用批处理直接查询到当前的公司网关,然后执行route delete,不过可别把192.168.1.1这个网关给删了哦.

就这两个问题,烦请各位大大指点一下

附:
本论坛有位大大提供了代码,我试了一下,可以查网关等,但是只能查一个,不能筛选.
@echo off

setlocal enabledelayedexpansion

set command=" ipconfig /all | findstr /c:"IP Address" /c:"Subnet Mask" /rc:"Gateway.*[0-9].*" /c:"DNS Servers" /rc:"[ ][ ][ ]*[0-9]" "

for /f "tokens=1,2,*" %%a in (' %command% ') do (

    if "%%b"=="" (

        set DNS_Servers2=%%a

    ) else (

        set value=%%c

        set value=!value:*:=!

        set %%a_%%~nb=!value:* =!

    )

)

echo 本机IP为:%IP_Address%  

echo 子网掩码:%Subnet_Mask%

echo 本机网关:%Default_Gateway%

echo 首选 DNS:%DNS_Servers%

rem echo 备用 DNS:%DNS_Servers2%

pause
作者: jbcdidgosir    时间: 2013-2-28 11:21

怎么没人回答啊?版主呢?麻烦指点一下啊!
作者: jbcdidgosir    时间: 2013-3-2 22:31

这个论坛没人气啊,绝望...
作者: Batcher    时间: 2013-3-2 23:46

本论坛有位大大提供了代码,我试了一下,可以查网关等,但是只能查一个,不能筛选

把ipconfig /all的结果贴出来,说说你想如何筛选?
作者: jbcdidgosir    时间: 2013-3-3 11:37

本帖最后由 jbcdidgosir 于 2013-3-3 11:57 编辑
把ipconfig /all的结果贴出来,说说你想如何筛选?
Batcher 发表于 2013-3-2 23:46


谢谢达人!

    公司网络:
Ethernet adapter Local Area Connection

IP Address: 10.110.7.29 (不同楼层,IP不同)
Subnet mask: 255.255.255.0 (不变)
Default Gateway: 10.110.7.1 (不同楼层,网关不同)
DHCP Server: 10.110.7.1 (不同楼层,DHCP不同)
DNS Server: 10.110.4.4 (不变)

VPN网络:

IP Address: 192.168.1.2 (可能会变)
Subnet mask: 255.255.255.0 (不变)
Default Gateway: 192.168.1.1 (不变)
DHCP Server: 192.168.1.1 (不变)
DNS Server: (没有)

现在我的要求是:
1. 删除公司网关
2. 添加两条路由测量到公司网关(即少量网址走公司网络)
3. 给VPN网络的DNS添加公司的DNS地址

谢谢了!
作者: Batcher    时间: 2013-3-3 12:03

回复 5# jbcdidgosir


    筛选哪个?
作者: jbcdidgosir    时间: 2013-3-3 12:16

回复 6# Batcher


1. 删除公司网关,route delete 0.0.0.0 mask 0.0.0.0 10.110.7.1,但是不同的楼层网关会不同,所以需要先获得网关地址,才能正确删除
2. 添加两条路由测量到公司网关(即少量网址走公司网络),同样需要先获得公司的网关
3. 给VPN网络的DNS添加公司的DNS地址,这个dns是固定的,但是要添加到VPN网络上

再次感谢
作者: Batcher    时间: 2013-3-3 13:35

回复 7# jbcdidgosir


一个问题一个问题的来,先获取网关:
  1. @echo off
  2. ipconfig /all>"%temp%\ipList.txt"
  3. for /f "tokens=1 delims=:" %%a in ('findstr /n "Ethernet adapter" "%temp%\ipList.txt"') do (
  4.     set SkipRow=%%a
  5.     goto :DoSkip
  6. )
  7. :DoSkip
  8. for /f "usebackq skip=%SkipRow% tokens=1,13" %%a in ("%temp%\ipList.txt") do (
  9.     if "%%a" equ "Default" (
  10.         set GATEWAY=%%b
  11.         goto :ShowResult
  12.     )
  13. )
  14. :ShowResult
  15. echo,%GATEWAY%
  16. pause
复制代码

作者: jbcdidgosir    时间: 2013-3-3 14:05

回复 8# Batcher


    谢谢,第一个问题,网关拿到了,然后需要添加
route add 10.128.0.0 mask 255.128.0.0 10.110.7.1
该怎么写呢?

谢谢!
作者: Batcher    时间: 2013-3-3 14:12

回复 9# jbcdidgosir


    命令你自己都写出来了,还有什么问题?
作者: jbcdidgosir    时间: 2013-3-3 14:35

回复  jbcdidgosir


    命令你自己都写出来了,还有什么问题?
Batcher 发表于 2013-3-3 14:12



呵呵,那是不是应该写:
route add 10.128.0.0 mask 255.128.0.0 %GATEWAY%

那第三个问题就是,我要把公司的dns(固定的)加入到VPN网络的DNS服务器地址上,我现在的方法是:
netsh -c interface ip add dns name="Local Area Connection 2" 10.110.4.4

但是如果是中文系统,名字不叫Local Area Connection 2,这句指令就不好通用了,能否指点一下?谢谢!
作者: Batcher    时间: 2013-3-3 15:17

回复 11# jbcdidgosir


批处理获取本地连接的名称
http://bbs.bathome.net/thread-1689-1-1.html
作者: jbcdidgosir    时间: 2013-3-4 10:57

回复  jbcdidgosir


一个问题一个问题的来,先获取网关:
Batcher 发表于 2013-3-3 13:35



  达人,调试中碰到问题:

我的iplist.txt文件是:
Windows IP Configuration

        Host Name . . . . . . . . . . . . : xxx
        Primary Dns Suffix  . . . . . . . :  
        Node Type . . . . . . . . . . . . : Unknown
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . : xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Ethernet adapter Wireless Network Connection:

        Media State . . . . . . . . . . . : Media disconnected
        Description . . . . . . . . . . . : Intel(R) Wireless WiFi Link 4965AG
        Physical Address. . . . . . . . . : 00-2D-E0-E9-DF-23

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . : xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        Description . . . . . . . . . . . : Intel(R) 82566MM Gigabit Network Connection
        Physical Address. . . . . . . . . : 00-2F-E8-1C-CA-29
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 10.110.7.77
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.110.7.1
        DHCP Server . . . . . . . . . . . : 10.110.7.1
        DNS Servers . . . . . . . . . . . : 10.110.4.4
        Lease Obtained. . . . . . . . . . : 2013年3月4日 9:51:21
        Lease Expires . . . . . . . . . . : 2013年3月6日 17:51:21

Ethernet adapter Local Area Connection 2:

        Connection-specific DNS Suffix  . :  
        Description . . . . . . . . . . . : TAP-Win32 Adapter V9
        Physical Address. . . . . . . . . : 00-1F-29-A3-AA-0F
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : 192.168.1.2
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.1.1
        DHCP Server . . . . . . . . . . . : 192.168.1.0
        Lease Obtained. . . . . . . . . . : 2013年3月4日 9:54:20
        Lease Expires . . . . . . . . . . : 2014年3月4日 9:54:20


我修改后的代码是:
@echo off
ipconfig /all>"%temp%\ipList.txt"
for /f "tokens=1 delims=:" %%a in ('findstr /n "Ethernet adapter" "%temp%\ipList.txt"') do (
    set SkipRow=%%a
    goto oSkip
)

:DoSkip
for /f "usebackq skip=%SkipRow% tokens=1,13" %%a in ("%temp%\ipList.txt") do (
    if "%%a" equ "Default" (
        set GATEWAY=%%b
    ))
for /f "usebackq skip=%SkipRow% tokens=1,15" %%a in ("%temp%\ipList.txt") do (
    if "%%a" equ "DNS" (
        set DNS=%%b
    ))
goto :ShowResult

:ShowResult
echo,%GATEWAY%
echo,%DNS%
pause

现在DNS可以正确显示,但是网关却是显示192.168.1.1.我希望能显示10.110.7.1麻烦达人再指点一下,谢谢!
作者: Batcher    时间: 2013-3-4 11:25

回复 13# jbcdidgosir
  1. @echo off
  2. ipconfig /all>"%temp%\ipList.txt"
  3. for /f "tokens=1 delims=:" %%a in ('findstr /n "Ethernet adapter" "%temp%\ipList.txt"') do (
  4.     set SkipRow=%%a
  5.     goto :getGateway
  6. )
  7. :getGateway
  8. for /f "usebackq skip=%SkipRow% tokens=1,13" %%a in ("%temp%\ipList.txt") do (
  9.     if "%%a" equ "Default" (
  10.         set GATEWAY=%%b
  11.         goto :getDNS
  12.     )
  13. )
  14. :getDNS
  15. for /f "usebackq skip=%SkipRow% tokens=1,15" %%a in ("%temp%\ipList.txt") do (
  16.     if "%%a" equ "DNS" (
  17.         set DNS=%%b
  18.         goto :ShowResult
  19.     )
  20. )
  21. :ShowResult
  22. echo,%GATEWAY%
  23. echo,%DNS%
  24. pause
复制代码

作者: jbcdidgosir    时间: 2013-3-4 13:27

本帖最后由 jbcdidgosir 于 2013-3-4 13:30 编辑

回复 14# Batcher


    管理员果然是大牛啊,谢谢!

作为保险,能否判断一下取得的gateway是不是192.168.1.1,如果是,则报错,这个能否做到?
作者: jbcdidgosir    时间: 2013-3-4 15:21

回复  Batcher


    管理员果然是大牛啊,谢谢!

作为保险,能否判断一下取得的gateway是不是192.168. ...
jbcdidgosir 发表于 2013-3-4 13:27



    已经自己搞定了,谢谢管理员.
作者: BAT-VBS    时间: 2013-3-4 17:15

回复 16# jbcdidgosir


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: jbcdidgosir    时间: 2013-3-4 19:19

回复  jbcdidgosir


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
BAT-VBS 发表于 2013-3-4 17:15



标明了,请问怎么给分?BTW,我刚注册,自己也没多少分啊...
作者: BAT-VBS    时间: 2013-3-4 19:34

回复 18# jbcdidgosir


    点击“评分”。不会扣你自己的分。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2