Created
June 29, 2018 08:53
-
-
Save gvlx/ac9378365507b4a18f8b76643be9141c to your computer and use it in GitHub Desktop.
sets a route to the local network (to be used after starting a VPN)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
:: | |
:: SET-LOCAL_LAN_ACCESS.cmd [-n|--dry-run][-d|--debug] | |
:: | |
:: sets a route to the local network (to be used after starting a VPN) | |
:: NEEDS ELEVATION | |
:: | |
:: where | |
:: [-n|--dry-run] don't actually set the route | |
:: [-d|--debug] print debug information | |
:: | |
:: HISTORY | |
:: 1.0 20180629 initial version | |
:: | |
:: TODOS | |
:: TODO:don't make a route if already exists | |
:: TODO:test route | |
:: TODO:is there only one 'lan' interface? | |
:: | |
SETLOCAL | |
SETLOCAL EnableExtensions | |
SETLOCAL DisableDelayedExpansion | |
:: set null redirection macro for commands | |
SET __NULL__= 1^>NUL 2^>NUL | |
:ProcessArguments | |
IF [%1]==[] GOTO EndProcessingArguments | |
IF /I [%1]==[-n] SET __DRY_RUN__=true | |
IF /I [%1]==[--dry-run] SET __DRY_RUN__=true | |
IF /I [%1]==[-d] SET __DEBUG__=true | |
IF /I [%1]==[--debug] SET __DEBUG__=true | |
SHIFT | |
GOTO ProcessArguments | |
:EndProcessingArguments | |
:: TODO:is there only one 'lan' interface? | |
SET __LOCAL_DNS_DOMAIN__='lan' | |
FOR /f "delims='=', tokens=2" %%A IN ('WMIC NICCONFIG WHERE "DNSDomain=%__LOCAL_DNS_DOMAIN__%" GET Index /FORMAT:LIST ^|FINDSTR /V "^$"') DO SET "__LOCAL_INTERFACE_NUMBER__=%%~A" | |
FOR /f "delims='=', tokens=2" %%A IN ('WMIC NICCONFIG WHERE "index=%__LOCAL_INTERFACE_NUMBER__%" GET Description /FORMAT:LIST ^|FINDSTR /V "^$"') DO SET "__LOCAL_INTERFACE_DESCRIPTION__=%%A" | |
FOR /f "delims={}, tokens=2" %%A IN ('WMIC NICCONFIG WHERE "index=%__LOCAL_INTERFACE_NUMBER__%" GET IPAddress /FORMAT:LIST ^|FINDSTR /V "^$"') DO CALL SET "__LOCAL_IP_ADDRESS__=%%~A" | |
FOR /f "delims={}, tokens=2" %%A IN ('WMIC NICCONFIG WHERE "index=%__LOCAL_INTERFACE_NUMBER__%" GET IPSubnet /FORMAT:LIST ^|FINDSTR /V "^$"') DO CALL SET "__LOCAL_MASK__=%%~A" | |
FOR /f "delims=':/' tokens=2" %%B IN ('NETSH INTERFACE IPV4 SHOW ADDRESS %__LOCAL_INTERFACE_NUMBER__% ^|FINDSTR "\/"') DO CALL SET "__LOCAL_SUBNET__=%%B" | |
:: remove spaces | |
SET __LOCAL_SUBNET__=%__LOCAL_SUBNET__: =% | |
IF DEFINED __DEBUG__ ( | |
IF DEFINED __DRY_RUN__ ECHO:On dry-run execution. | |
ECHO:Interface name: "%__LOCAL_INTERFACE_DESCRIPTION__%" | |
ECHO:Interface number: %__LOCAL_INTERFACE_NUMBER__% | |
ECHO:Local IP address: %__LOCAL_IP_ADDRESS__% | |
ECHO:Local IP mask: %__LOCAL_MASK__% | |
ECHO:Local IP subnet: %__LOCAL_SUBNET__% | |
) | |
IF DEFINED __DRY_RUN__ GOTO EOFscript | |
IF DEFINED __DEBUG__ ECHO ON | |
::TODO: ROUTE PRINT | FINDSTR %__LOCAL_SUBNET__% | |
ROUTE ADD %__LOCAL_SUBNET__% MASK %__LOCAL_MASK__% %__LOCAL_IP_ADDRESS__% METRIC 1 IF %__LOCAL_INTERFACE_NUMBER__% | |
:EOFscript | |
@echo off | |
ENDLOCAL | |
EXIT /B |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment