1

Сплит вопрос: этот другой здесь для Linux.

Я думаю, что самый простой способ деактивировать Интернет (не LAN) в командной строке Windows - это удалить шлюз по умолчанию, поэтому при условии, что LAN - это 10.0.2.0/24, а шлюз - 10.0.2.1:

`route delete 0.0.0.0 mask 0.0.0.0 10.0.2.1`  

Чтобы активировать интернет:

`route add 0.0.0.0 mask 0.0.0.0 10.0.2.1`

Но, даже если это простая строка, требуется сначала определить IP-адрес шлюза по умолчанию:

  • В Windows:

    route print

Я собираюсь создать некоторые сценарии оболочки общего назначения, которые должны включать / отключать Интернет (но поддерживать работу локальной сети), поэтому мне понадобятся некоторые операции, эквивалентные grep для фильтрации и определения точного IP-номера шлюза (это может быть 10.0 .2.1, 127.0.0.1, 127.0.50.1, 192.168.0.1 ... и т.д.), Если мне не удастся найти более простую командную строку.
Есть идеи, пожалуйста?

  • РЕДАКТИРОВАТЬ: Некоторые люди сообщают, что удаление шлюза в Windows также может быть сделано следующим образом:

route delete 0.0.0.0

Таким образом, по-видимому, не будет проблем с изменением сценария удаления, созданного @ and31415.

1 ответ1

2

Пакетные скрипты

Подобно подходу @ John1024, вот как вы можете сделать это в Windows:

запрещать

@echo off
cd /d "%~dp0"

REM retrieve the current gateway
set dest=0.0.0.0
for /f "tokens=2,3" %%A in ('"route print %dest% | findstr /c:"%dest%" "') do (

REM save the IP and delete the gateway
echo %%A %%B>%dest%.txt
route delete %dest% >nul
)
exit /b

включить

@echo off
cd /d "%~dp0"

REM ensure the settings file exists
set dest=0.0.0.0
if not exist %dest%.txt exit /b 2

REM restore the default gateway
for /f "tokens=1,2" %%A in (%dest%.txt) do (route add %dest% mask %%A %%B >nul)
exit /b

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .