Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автоматизация изменения сетевых настроек

Ответить
Настройки темы
CMD/BAT - [решено] Автоматизация изменения сетевых настроек

Старожил


Сообщения: 303
Благодарности: 19

Профиль | Отправить PM | Цитировать


Доброго дня.
Коллеги окажите помощь в такой для меня не понятной ситуации.
1: пробую написать скрипт для изменения сетевых настроек, но столкнулся вот с такой не задачей
Когда подключение называется кириллицей то постоянно идет синтетическая ошибка, если же назову латинскими буквами
netsh interface ipv4 show ipaddresses "LAN" normal
все работает нормально.
2. Так же не пойму возможно ли первоначально определять имя интерфейса и уже потом использовать его в скрипте.
а то может называться "Подключение по локально сети", а может "Подключение по локальной сети Х"
Скрипт использовался за основания найденный в инете
Код: Выделить весь код
@ECHO off
cls
:start
netsh interface ipv4 show ipaddresses "LAN" normal
rem просмотр текущей конфигурации сетевой карты "LAN"

netsh interface ipv4 show dnsservers "LAN"
rem просмотр dns-серверов "LAN"
rem netsh interface ipv4 show addresses
ECHO.
ECHO 1 LAN DHCP
ECHO 2 LAN 192.168.1.XXX (gw=YYY)
ECHO 3 LAN DNS
rem ECHO 4 WLAN DHCP
rem ECHO 5 WLAN Home
rem ECHO 6 WLAN Work
ECHO 9 ping www.google.com -t
ECHO 0 Exit
rem вывод меню для пользователя


set choice=
rem обнуление переменной choice

set /p choice=Enter the number of your choice: 
rem ввод пользователем значения переменной choice

if '%choice%'=='1' goto one
rem если значение choice равно единице, то перейти к метке one
if '%choice%'=='2' goto two
if '%choice%'=='3' goto three
if '%choice%'=='4' goto four
if '%choice%'=='5' goto five
if '%choice%'=='6' goto six
rem if '%choice%'=='7' goto seven
rem if '%choice%'=='8' goto eight
if '%choice%'=='9' goto nine
if '%choice%'=='0' goto end

if '%choice%'=='' goto start
rem при использовании DHCP удобно просто нажимать Enter и сразу видеть - получен ли IP-адрес или нет

ECHO "%choice%" is not valid. Please try again
ECHO.
goto start
rem если введенное пользователем значение не предусмотрено, то начать сначала

:one
rem LAN DHCP
netsh interface ipv4 set address name="Подключение по локальной сети 2" source=dhcp
netsh interface ipv4 set dns name="Подключение по локальной сети 2" source=dhcp
goto start

:two
rem LAN 192.168.1.XXX (gw=YYY)
ECHO Manual choice
set /p ip=Enter the last octet of your IP 192.168.1.
rem ввод значения последнего октета IP-адреса вручную
set /p gw=Enter the last octet of your GW 192.168.1.
rem ввод значения последнего октета шлюза вручную

if '%gw%'=='0' (netsh interface ipv4 set address name="Подключение по локальной сети 2" static 192.168.1.%ip% 255.255.255.0) else (netsh interface ipv4 set address name="Подключение по локальной сети 2" static 192.168.1.%ip% 255.255.255.0 192.168.1.%gw%)
rem if '%gw%'!==!'0' (netsh interface ipv4 add dns "LAN" 192.168.1.%gw% 2)
rem если нужен просто IP-адрес и маска (напимер, по WLAN - интернет, а по LAN надо настроить какую-то железку), то вводим 0 в качестве GW и он (GW) прописываться не будет

rem netsh interface ipv4 set address name="LAN" static 192.168.1.%ip% 255.255.255.0 192.168.1.%gw%
rem netsh interface ipv4 add dns "LAN" 192.168.1.%gw% 2
goto start

:three
rem LAN DNS
rem netsh interface ipv4 set address name="LAN" static 10.253.0.35 255.255.255.192 10.253.0.7
rem netsh interface ipv4 set dnsserver "LAN" static none
netsh interface ipv4 set dnsserver "LAN" static none
netsh interface ipv4 add dns "LAN" 192.168.222.150 1
netsh interface ipv4 add dns "LAN" 192.168.222.152 2
rem netsh interface ipv4 add dns "LAN" 4.2.2.2 3
rem netsh interface ipv4 add dns "LAN" 8.8.8.8 4
goto start

:four
rem WLAN DHCP
netsh interface ipv4 set address name="WLAN" source=dhcp
netsh interface ipv4 set dns name="WLAN" source=dhcp
goto start

:five
rem WLAN Home
netsh interface ipv4 set address name="WLAN" static 192.168.1.200 255.255.255.0 192.168.1.254
netsh interface ipv4 set dnsserver "WLAN" static none
netsh interface ipv4 add dns "WLAN" 192.168.1.254 1
netsh interface ipv4 add dns "WLAN" 212.154.163.162 2 
netsh interface ipv4 add dns "WLAN" 4.2.2.2 3
netsh interface ipv4 add dns "WLAN" 8.8.8.8 4
goto start

:six
rem WLAN Work
netsh interface ipv4 set address name="WLAN" static 10.253.0.35 255.255.255.192 10.253.0.7
netsh interface ipv4 set dnsserver "WLAN" static none
netsh interface ipv4 add dns "WLAN" 212.154.163.162 1
netsh interface ipv4 add dns "WLAN" 212.19.149.178 2
netsh interface ipv4 add dns "WLAN" 4.2.2.2 3
netsh interface ipv4 add dns "WLAN" 8.8.8.8 4
goto start

:nine
ping.exe www.google.com -t
rem бесконечный ping, прерывается вводом Ctrl+C, а затем Y (завершить выполнение файла) или N (не завершать выполнение) и Enter
goto start

:end

rem полезные команды:

rem timeout 5
rem эта команда приостанавливает выполнение файла на 5 секунд

rem pause
rem приостанавливает выполнение файла, выводит сообщение "нажмите любую клавишу для продолжения" и ждет нажатия любой клавиши :)

rem pause > null
rem то же, только без вывода сообщения на экран

rem cls
rem очищает экран

Отправлено: 12:38, 14-07-2016

 

Старожил


Сообщения: 303
Благодарности: 19

Профиль | Отправить PM | Цитировать


Все решил проблему, выложу оптимизированный скрипт позже
оставил поля вдруг кому что понадобиться:
Код: Выделить весь код
@ECHO off
cls

netsh interface ipv4 show ipaddresses
rem netsh interface ipv4 show ipaddresses "LAN" normal
rem просмотр текущей конфигурации сетевой карты "LAN"

netsh interface ipv4 show dnsservers
rem просмотр dns-серверов "LAN"
rem netsh interface ipv4 show addresses

ECHO.
ECHO Select LAN interface for EDIT
goto idlan

:start
cls
ECHO.
ECHO 1 LAN DHCP
ECHO 2 LAN 192.168.1.XXX (gw=YYY)
ECHO 3 LAN DNS
rem ECHO 4  LAN
rem ECHO 4 WLAN DHCP
rem ECHO 5 WLAN Home
rem ECHO 6 WLAN Work
ECHO 9 ping www.google.com -t
ECHO 0 Exit
rem вывод меню для пользователя


set choice=
rem обнуление переменной choice

set /p choice=Enter the number of your choice: 
rem ввод пользователем значения переменной choice

if '%choice%'=='1' goto one
rem если значение choice равно единице, то перейти к метке one
if '%choice%'=='2' goto two
if '%choice%'=='3' goto three
rem if '%choice%'=='4' goto four
rem if '%choice%'=='4' goto idlan
if '%choice%'=='5' goto five
if '%choice%'=='6' goto six
rem if '%choice%'=='7' goto seven
rem if '%choice%'=='8' goto eight
if '%choice%'=='9' goto nine
if '%choice%'=='0' goto end

if '%choice%'=='' goto start
rem при использовании DHCP удобно просто нажимать Enter и сразу видеть - получен ли IP-адрес или нет

ECHO "%choice%" is not valid. Please try again
ECHO.
goto start
rem если введенное пользователем значение не предусмотрено, то начать сначала

:idlan
set id=
set /p id=Enter interface:
goto start

:one
rem LAN DHCP
netsh interface ipv4 set address name=%id% source=dhcp
netsh interface ipv4 set dns name=%id% source=dhcp
goto start

:two
rem LAN 192.168.1.XXX (gw=YYY)
ECHO Manual choice
set /p ip=Enter the last octet of your IP 192.168.1.
rem ввод значения последнего октета IP-адреса вручную
set /p gw=Enter the last octet of your GW 192.168.1.
rem ввод значения последнего октета шлюза вручную

if '%gw%'=='0' (netsh interface ipv4 set address name=%id% static 192.168.1.%ip% 255.255.255.0) else (netsh interface ipv4 set address name=%id% static 192.168.1.%ip% 255.255.255.0 192.168.1.%gw%)
rem if '%gw%'!==!'0' (netsh interface ipv4 add dns "LAN" 192.168.1.%gw% 2)
rem если нужен просто IP-адрес и маска (напимер, по WLAN - интернет, а по LAN надо настроить какую-то железку), то вводим 0 в качестве GW и он (GW) прописываться не будет

rem netsh interface ipv4 set address name="LAN" static 192.168.1.%ip% 255.255.255.0 192.168.1.%gw%
rem netsh interface ipv4 add dns "LAN" 192.168.1.%gw% 2
goto start

:three
rem LAN DNS
rem netsh interface ipv4 set address name="LAN" static 10.253.0.35 255.255.255.192 10.253.0.7
rem netsh interface ipv4 set dnsserver "LAN" static none
netsh interface ipv4 set dnsserver %id% static none
set dns1=
set /p dns1=Enter DNS #1:
netsh interface ipv4 add dns %id% %dns1% 1
netsh interface ipv4 add dns %id% 192.168.222.152 2
rem netsh interface ipv4 add dns "LAN" 4.2.2.2 3
rem netsh interface ipv4 add dns "LAN" 8.8.8.8 4
goto start

:four
rem WLAN DHCP
netsh interface ipv4 set address name="WLAN" source=dhcp
netsh interface ipv4 set dns name="WLAN" source=dhcp
goto start

:five
rem WLAN Home
netsh interface ipv4 set address name="WLAN" static 192.168.1.200 255.255.255.0 192.168.1.254
netsh interface ipv4 set dnsserver "WLAN" static none
netsh interface ipv4 add dns "WLAN" 192.168.1.254 1
netsh interface ipv4 add dns "WLAN" 212.154.163.162 2 
netsh interface ipv4 add dns "WLAN" 4.2.2.2 3
netsh interface ipv4 add dns "WLAN" 8.8.8.8 4
goto start

:six
rem WLAN Work
netsh interface ipv4 set address name="WLAN" static 10.253.0.35 255.255.255.192 10.253.0.7
netsh interface ipv4 set dnsserver "WLAN" static none
netsh interface ipv4 add dns "WLAN" 212.154.163.162 1
netsh interface ipv4 add dns "WLAN" 212.19.149.178 2
netsh interface ipv4 add dns "WLAN" 4.2.2.2 3
netsh interface ipv4 add dns "WLAN" 8.8.8.8 4
goto start

:nine
ping.exe www.google.com -t
rem бесконечный ping, прерывается вводом Ctrl+C, а затем Y (завершить выполнение файла) или N (не завершать выполнение) и Enter
goto start

:end

rem полезные команды:

rem timeout 5
rem эта команда приостанавливает выполнение файла на 5 секунд

rem pause
rem приостанавливает выполнение файла, выводит сообщение "нажмите любую клавишу для продолжения" и ждет нажатия любой клавиши :)

rem pause > null
rem то же, только без вывода сообщения на экран

rem cls
rem очищащет экран

Последний раз редактировалось Fantastish, 14-07-2016 в 13:21.


Отправлено: 13:13, 14-07-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Fantastish:
Когда подключение называется кириллицей то постоянно идет синтетическая ошибка, если же назову латинскими буквами
netsh interface ipv4 show ipaddresses "LAN" normal
все работает нормально. »
Кодировка пакетного файла какая?

Отправлено: 01:57, 15-07-2016 | #3


Старожил


Сообщения: 303
Благодарности: 19

Профиль | Отправить PM | Цитировать


866, пробовал ее изменять, самым простым способом вышло просто по ID интерфейса все делать

Отправлено: 08:54, 15-07-2016 | #4


Ветеран


Сообщения: 542
Благодарности: 35

Профиль | Сайт | Отправить PM | Цитировать


Fantastish,
я стараюсь сразу переименовывать подключения.

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 10:05, 18-07-2016 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автоматизация изменения сетевых настроек

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Скрипт изменения сетевых настроек align Microsoft Windows 7 25 03-03-2014 09:19
Доступ - Запрет изменения сетевых настроек в Windows XP Home Edition Den_93rus Microsoft Windows 2000/XP 4 28-04-2010 11:41
CMD/BAT - [решено] Батник для изменения сетевых настроек. dvassilyev Скриптовые языки администрирования Windows 12 12-04-2010 16:40
Разное - [решено] Автоматизация настроек IE7 SANIOK_AV Microsoft Windows 2000/XP 10 08-12-2008 18:48
Разное - [решено] права изменения сетевых настроек nmn Microsoft Windows 2000/XP 1 28-10-2008 19:59




 
Переход