upd
This commit is contained in:
53
computer_networks/labs/lab1/code/netcfg_commented.cmd
Normal file
53
computer_networks/labs/lab1/code/netcfg_commented.cmd
Normal file
@@ -0,0 +1,53 @@
|
||||
@echo off // отключаем отображение выполеняемых команд в консольке
|
||||
chcp 65001 >nul // меняем кодировку на utf8 (вывод команды отправляется в nul)
|
||||
setlocal EnableExtensions EnableDelayedExpansion // включили расширенные возможности cmd и отложенную подстановку переменных
|
||||
|
||||
set MODE=%1 // первый параметр (statis/dhcp)
|
||||
set IFACE=%2 // второй параметр (имя интерфейса)
|
||||
set IP=%3 // третий параметр (ipv4 адрес)
|
||||
set MASK=%4 // четвертый параметр (маска подсети)
|
||||
set GW=%5 // пятый параметр (gateway)
|
||||
set DNS1=%6 // шестой параметр (первый DNS-сервер)
|
||||
set DNS2=%7 // седьмой параметр (второй DNS-сервер)
|
||||
|
||||
if /i "%MODE%"=="dhcp" goto dhcp // если параметр режима dhcp перейти по метке dhcp
|
||||
if /i "%MODE%"=="static" goto static // аналогично со static
|
||||
|
||||
echo 1) DHCP
|
||||
echo 2) Static // если режим не задан в параметрах то распечатаем 2 варианта и дадим пользователю выбрать
|
||||
set /p MODESEL=Select mode [1/2]: // спросим у пользователя вариант
|
||||
if "%MODESEL%"=="1" set MODE=dhcp // если введено 1, то MODE=dhcp
|
||||
if "%MODESEL%"=="2" set MODE=static // иначе MODE=static
|
||||
|
||||
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // если не указано имя интерфейса запросим ввод
|
||||
if "%IFACE%"=="" set IFACE=Ethernet // если пользователь ничего не ввел (пустая строка), то используем Ethernet по умолчанию
|
||||
|
||||
if /i "%MODE%"=="dhcp" goto dhcp // опять же если выбран dhcp переходим на соответствующую метку
|
||||
if /i "%MODE%"=="static" goto static // аналогично
|
||||
echo Invalid selection // иначе выводим текст ошибки
|
||||
exit /b 1 // и выходим из программы (код ошибки 1)
|
||||
|
||||
:dhcp // метка для настройки DHCP
|
||||
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // опять же если имя интерфейса не задано, запрашиваем
|
||||
if "%IFACE%"=="" set IFACE=Ethernet // по умолчанию ставим Ethernet
|
||||
netsh interface ip set address name="%IFACE%" source=dhcp // переводим интерфейс в получение ip через dhcp
|
||||
netsh interface ip set dns name="%IFACE%" source=dhcp // аналогично для dns
|
||||
ipconfig /flushdns // очищаем dns-кэш
|
||||
echo Done // оповещаем юзера о завершении операции
|
||||
exit /b 0 // выходим с кодом ошибки 0
|
||||
|
||||
:static
|
||||
if not defined IFACE set /p IFACE=Interface name [Ethernet]: // спрашиваем имя интерфеса если оно не установлено уже
|
||||
if "%IFACE%"=="" set IFACE=Ethernet // по умолчанию ставим Ethernet
|
||||
if not defined IP set /p IP=IPv4 address: // запрашиваем пользователя ввести ip
|
||||
if not defined MASK set /p MASK=Subnet mask: // маску
|
||||
if not defined GW set /p GW=Gateway: // шлюз
|
||||
if not defined DNS1 set /p DNS1=DNS1: // dns1
|
||||
if not defined DNS2 set /p DNS2=DNS2 (optional): // dns2
|
||||
netsh interface ip set address name="%IFACE%" static %IP% %MASK% %GW% 1 // назначаем все переданные пользователем параметры
|
||||
netsh interface ip set dns name="%IFACE%" static %DNS1% primary // задаем основной dns сервер
|
||||
if defined DNS2 netsh interface ip add dns name="%IFACE%" %DNS2% index=2 // если пользователем был задан второй dns то устанавливаем его как второй
|
||||
ipconfig /flushdns // очищаем dns-кэш
|
||||
echo Done // оповещаем пользователя об успешном завершении программы
|
||||
exit /b 0 // выходим с нулевым кодом ошибки
|
||||
|
||||
Reference in New Issue
Block a user