Files
exams/computer_networks/labs/lab1/code/netcfg_commented.cmd
2025-10-01 22:55:09 +03:00

54 lines
4.2 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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 // выходим с нулевым кодом ошибки