Linha de comando do Windows: a maneira mais rápida de desativar a Internet (mantendo a LAN)?

1

Split question: this other one here is for Linux.

Acho que a maneira mais fácil de desativar a Internet (não a LAN) na linha de comando do Windows é remover o gateway padrão, portanto, supondo que a LAN seja 10.0.2.0/24 e o gateway seja 10.0.2.1:

'route delete 0.0.0.0 mask 0.0.0.0 10.0.2.1'  

Para reativar a internet:

'route add 0.0.0.0 mask 0.0.0.0 10.0.2.1'

Mas, mesmo quando se trata de uma linha simples, é necessário descobrir primeiro o IP do gateway padrão:

  • No Windows:

    route print

Eu vou construir alguns shell scripts de propósito geral que precisam ativar / desativar a internet (mas manter a LAN funcionando), então parece que vou precisar de algumas operações grep equivalentes para filtrar e detectar o número IP do gateway exato (pode ser 10.0.2.1, 127.0.0.1, 127.0.50.1, 192.168.0.1 ... etc), a menos que consiga encontrar uma linha de comando mais simples.
Alguma idéia, por favor?

  • EDIT: Algumas pessoas informam que a exclusão do gateway no Windows também pode ser feita assim:

route delete 0.0.0.0

Portanto, aparentemente, não haveria nenhum problema em modificar o script de exclusão feito por @ and31415.

    
por Sopalajo de Arrierez 22.04.2014 / 12:03

1 resposta

2

Scripts em lote

Semelhante a @ abordagem do John1024 , veja como você pode fazer isso no Windows:

Desativar

@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

Ativar

@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
    
por 22.04.2014 / 12:06