标题: [网络连接] [已解决]批处理如何选择网卡,并添加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
一个问题一个问题的来,先获取网关:- @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 :DoSkip
- )
-
- :DoSkip
- for /f "usebackq skip=%SkipRow% tokens=1,13" %%a in ("%temp%\ipList.txt") do (
- if "%%a" equ "Default" (
- set GATEWAY=%%b
- goto :ShowResult
- )
- )
-
- :ShowResult
- echo,%GATEWAY%
- 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 - @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 :getGateway
- )
-
- :getGateway
- for /f "usebackq skip=%SkipRow% tokens=1,13" %%a in ("%temp%\ipList.txt") do (
- if "%%a" equ "Default" (
- set GATEWAY=%%b
- goto :getDNS
- )
- )
-
- :getDNS
- 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
复制代码
作者: 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 |