Александр (блог, чтобы похвастаться) Понедельник, 29.04.2024, 17:24:25
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Категории
Программирование [2]
Windows CMD [4]
ОчУмелые Ручки [0]
Windows [1]
Cisco [0]
CME [1]

Главная » 2010 » Январь » 1 » Использование netsh 2 - продолжение
Использование netsh 2 - продолжение
20:00:08

Я уже рассказывал о том, как немного автоматизировал ввод одних и тех же данных (IP-address, Mask, Default Gateway, DNS Server) с помощью утилиты netsh. Однако для того, чтобы автоматизировать процессы полностью мне нужно было несколько bat-файлов. А хотелось только один...

Мне требовалось минимум 4 файла: один для подключения к локальной сети дома, второй для сети на работе, третий для проверки DHCP и четвертый для настройки модемов с адресом 192.168.1.1. Оказалось, что эти файлы занимают много места на рабочем столе :). И мне показалось, что bat-файлы должны помочь разрешить это. И верно!

Погуглив немного я обнаружил, что bat-файлы имеют поддержку пользовательского ввода с помощью команды "set /p choice=Prompt string", где "choice" - переменная в которую записываются пользовательские данные, а "Prompt string" - подсказка для пользователя

Используя эту возможность я объединил все мои файлы в один, гораздо более удобный. Начинается он с двух команд, которые отображают текущее состояние моего сетевого интерфейса:
netsh interface ipv4 show ipaddresses "Local Area Connection" normal
netsh interface ipv4 show dnsservers "Local Area Connection"

Затем я вывожу на экран список доступных действий с помощью следующих команд:
ECHO.
ECHO 1. 192.168.1.2 (gw=254)
ECHO 2. Working IP
ECHO 3. Dynamic (DHCP)
ECHO 4. 192.168.1.2 (gw=1)
ECHO 0. Exit

И, наконец, мы подходим собственно к выбору необходимый действий:
set /p choice=Enter the number of your choice:

Теперь необходимо отреагировать на ввод пользователя:
if '%choice%'=='1' goto one
if '%choice%'=='2' goto two
if '%choice%'=='3' goto three
if '%choice%'=='4' goto four
if '%choice%'=='0' goto end

Каждая строчка сравнивает введенное пользователем значение с 1, 2, 3, 4 и 0. Если сравнение дает положительный результат, то происходит переход к нужной метке (one, two, three, four или end). Строка ECHO 1. 192.168.1.2 (gw=254) означает, что выбрав пункт 1, компьютеру будет присвоен IP-адрес 192.168.1.2, а Основной шлюз (Default Gateway) будет 192.168.1.254. Если пользователь введет цифру 1, то первое же сравнение if '%choice%'=='1' goto one даст положительный результат и мы перейдем к метке "one".

:one
netsh interface ipv4 set address name="Local Area Connection" static 192.168.1.2 255.255.255.0 192.168.1.254
netsh interface ipv4 set dnsserver "Local Area Connection" static none
netsh interface ipv4 add dns "Local Area Connection" 212.19.149.178 1
netsh interface ipv4 add dns "Local Area Connection" 192.168.1.254 2
goto end
Первая строчка - собственно метка, вторая задает IP-адрес, маску сети и основной шлюз. Третья - очищает список DNS-серверов, затем на первое место ставится DNS 212.19.149.178, а на второе 192.168.1.254 (мой домашний модем Billion). И последняя строчка отсылает нас к метке end для завершения выполнения программы.

Остальные конфигурации идентичны, кроме DHCP:
netsh interface ipv4 set address name="Local Area Connection" source=dhcp
netsh interface ipv4 set dns name="Local Area Connection" source=dhcp

А вот, собственно, и все содержание моего bat-файла.

@ECHO off
cls

netsh interface ipv4 show ipaddresses "Local Area Connection" normal
netsh interface ipv4 show dnsservers "Local Area Connection"
ECHO.
ECHO 1. 192.168.1.2 (gw=254)
ECHO 2. Working IP
ECHO 3. Dynamic (DHCP)
ECHO 4. 192.168.1.2 (gw=1)
ECHO 0. Exit

set choice=
set /p choice=Enter the number of your choice:
if '%choice%'=='1' goto one
if '%choice%'=='2' goto two
if '%choice%'=='3' goto three
if '%choice%'=='4' goto four
if '%choice%'=='0' goto end

:one
netsh interface ipv4 set address name="Local Area Connection" static 192.168.1.2 255.255.255.0 192.168.1.254
netsh interface ipv4 set dnsserver "Local Area Connection" static none
netsh interface ipv4 add dns "Local Area Connection" 212.19.149.178 1
netsh interface ipv4 add dns "Local Area Connection" 192.168.1.254 2
goto end

:two
netsh interface ipv4 set address name="Local Area Connection" static x.x.x.x x.x.x.x x.x.x.x
netsh interface ipv4 set dnsserver "Local Area Connection" static none
netsh interface ipv4 add dns "Local Area Connection" x.x.x.x 1
goto end

:three
netsh interface ipv4 set address name="Local Area Connection" source=dhcp
netsh interface ipv4 set dns name="Local Area Connection" source=dhcp
goto end

:four
netsh interface ipv4 set address name="Local Area Connection" static 192.168.1.2 255.255.255.0 192.168.1.1
netsh interface ipv4 set dnsserver "Local Area Connection" static none
netsh interface ipv4 add dns "Local Area Connection" 212.19.149.178 1
netsh interface ipv4 add dns "Local Area Connection" 192.168.1.1 2
goto end

:end
timeout 5

Хочу обратить внимание, что писалось и тестировалось сие творение на Windows Vista, если кто-то адаптирует этот скрипт для XP, то не забудьте сообщить мне об этом :).

И еще. На самом деле я пользуюсь другим скриптом, немного измененным, но и о нем я скоро расскажу. Комментарии, оценки, пожелания и не только - приветствуются.

Категория: Windows CMD | Просмотров: 4609 | Добавил: aleksashka1987 | Рейтинг: 0.0/0 |
Всего комментариев: 2
2 ПеGac  
0
я могу слегка эту настройку сделать красивее используя инсталяторы NSIS или же SetupFactory

1 ПеGac  
0
Я адаптировал скрипт и к 7 и к ХР пользуюсь скритом для настройки сети в разных предприятиях

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Поиск

Copyright Aleksashka Company © 2024 Создать бесплатный сайт с uCoz