Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Автоматизация изменения сетевых настроек (http://forum.oszone.net/showthread.php?t=316785)

Fantastish 14-07-2016 12:38 2650790

Автоматизация изменения сетевых настроек
 
Доброго дня.
Коллеги окажите помощь в такой для меня не понятной ситуации.
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 очищает экран


Fantastish 14-07-2016 13:13 2650794

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

@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 очищащет экран


Iska 15-07-2016 01:57 2651043

Цитата:

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

Кодировка пакетного файла какая?

Fantastish 15-07-2016 08:54 2651070

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

Опиум 18-07-2016 10:05 2651785

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


Время: 01:40.

Время: 01:40.
© OSzone.net 2001-