Pull to refresh

Изменяем сетевые параметры Windows с помощью netsh+batch

Года полтора назад была у меня такая рутинная работа: приходя на работу – вводить IP-адрес, маску, шлюз, DNS для Ethernet-порта ноутбука, а приходя домой – менять все эти параметры на другие. Первое время я мирился, но длилось это недолго – ну как можно каждый день делать одно и то же!? Тогда и вышел я на след Windows-утилиты netsh, которая, вкупе с batch-файлом дала возможность делать то же самое, но гораздо (!) быстрее и удобнее (используя стандартные средства Windows и всего один текстовый файл).

image

Здесь утилита netsh уже была немного описана, но я предлагаю другую реализацию, возможности которой будут более гибкими.

Netsh


Итак, поигравшись с netsh на Windows 7 (для Windows XP синтаксис немного меняется) я обнаружил, что можно присвоить интерфейсу (в приведенном ниже примере — интерфейсу под названием «LAN») IP-адрес, маску и шлюз с помощью команды:

netsh interface ipv4 set address name="LAN" static 10.253.0.35 255.255.255.192 10.253.0.7

Команды, понятное дело, вводятся в командной строке Windows. Если параметры отказываются изменяться — запускаем cmd от имени администратора.

Если понадобится добавить еще один IP-адрес, то используем:

netsh interface ipv4 add address name="LAN" address=192.168.2.4 255.255.255.0

Две следующие команды очищают список DNS-серверов и выставляют IP-адрес 212.154.163.162 первым в списке DNS-серверов:

netsh interface ipv4 set dnsserver "LAN" static none
netsh interface ipv4 add dns "LAN" 212.154.163.162 1

Чтобы предоставить возможность назначения сетевых параметров DHCP-серверу используем:

netsh interface ipv4 set address name="LAN" source=dhcp
netsh interface ipv4 set dns name="LAN" source=dhcp

Ну и для отображения текущих параметров можно использовать:

netsh interface ipv4 show ipaddresses "LAN" normal
netsh interface ipv4 show dnsservers "LAN"


Batch-файлы


На этом закончим наше знакомство с netsh и перейдем к batch-файлами Windows (текстовый файл с расширением «bat»), который позволяет не только автоматизировать ввод длинных команд (в том числе и netsh-комманд), но также поможет сделать этот процесс более интересным, интерактивным и не заставит нас использовать для каждого варианта настроек отдельный файл.

Для вывода на экран используется команда «ECHO» (она будет использоваться для вывода своеобразного меню):

ECHO 1 LAN DHCP

Для вывода сообщения и запроса ввода от пользователя используем «SET»:

set /p choice=Enter the number of your choice: 

Для условного перехода к метке воспользуемся связкой «IF» и «GOTO» (если кто знает, можно ли использовать Case — буду рад упростить итоговый скрипт):

if '%choice%'=='1' goto one

Для обозначения метки (в нашем случае метки «one») используется двоеточие:

:one


Итого


На этом можно закончить и торжественно сообщить, что Вы знаете все, что нужно для того, чтобы полностью разобраться в итоговом batch-файле (есть комментарии на русском языке) и переделать его под себя. Вот ссылка на страничку гугл-проекта QNet (сделал по аналогии с Yet Another Net Switcher — спасибо автору, раньше этим не пользовался). Ах да, комментарии в batch-файлах начинаются с «rem».

P.S. Теперь ни на работе, ни дома этим скриптом почти не пользуюсь (есть DHCP), но в командировках — по-прежнему очень удобная вещь.

P.P.S. С русскоязычным названием «Подключение по локальной сети» скрипт может и не сработать, но я давно привык именовать сетевые карты как «LAN» и «WLAN».
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.