2011年7月6日

切换无线网络连接脚本

由于公司网络使用DHCP,而自己家里是用静态IP的,每天手动切换很是麻烦,所以写了个批处理来切换网络连接。

公司的无线网络连上后,还要做web认证;家里网络连上后,还要连vpn,脚本顺便把这些都做了,直接开机启动即可。

wlan_config.bat:

@ECHO OFF
 @rem 家庭无线名称
 set home=xxx
 @rem 公司无线名称
 set office=yyy
 echo detecting current wlan config...
 setlocal enabledelayedexpansion
 netsh wlan show networks | findstr /C:"%home%" > nul
 IF !errorlevel! equ 0 (
     ipconfig /all | findstr /C:"192.168.0.100" > nul
     IF !errorlevel! equ 0 (
         echo already static ip, exit...
     ) ELSE (
         echo use static ip...
         call %~dp0home.bat
         echo connect %home%...
         netsh wlan connect %home%
     )
     echo connect vpn...
     call %~dp0vpn.bat
     echo done
 ) ELSE (
     netsh wlan show networks | findstr /C:"%office%" > nul
     IF !errorlevel! equ 0 (
         echo use dhcp...
         call %~dp0dhcp.bat
         echo connect %office%...
         netsh wlan connect %office%
         call %~dp0auth.bat
         echo done
     ) ELSE (
         echo unknow wlan, use dhcp default...
         call %~dp0dhcp.bat
         echo done
         pause
     )
 )  

其中用到了home.bat,dhcp.bat,vpn.bat,auth.bat,如果不需要执行某个bat,去掉调用的那句就可以了。
这些bat都要放在相同目录下。

home.bat(设置静态IP):

netsh interface ip set address "无线网络连接"  static 192.168.0.100 255.255.255.0 192.168.0.1 1
netsh interface ip set dns "无线网络连接"  static 202.101.172.35
netsh interface ip add dns "无线网络连接"  202.101.172.47

dhcp.bat(设置为DHCP):

netsh interface ip set address name="无线网络连接" source=dhcp
netsh interface ip set dns name="无线网络连接" source=dhcp register=PRIMARY

vpn.bat(vpn拨号):

rasdial vpn username pwd

auth.bat(web认证,这个脚本需要cygwin才能运行,因为用了curl):

@echo off
d:
chdir d:\cygwin\bin
curl -d "username=xxx&password=yyy" http://wireless-gateway.netease.com/login.html >nul

最后在启动里创建一个快捷方式指向wlan_config.bat就可以了。