Skip to content

Instantly share code, notes, and snippets.

@gvlx
Created June 29, 2018 08:53
Show Gist options
  • Save gvlx/ac9378365507b4a18f8b76643be9141c to your computer and use it in GitHub Desktop.
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)
@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