배치파일 활용하기7
- 네트워크 설정하기
: 고정IP 및 DNS 설정하는 배치파일
회사에서는 내부망을 사용해야하는 경우가 있는데 이 경우 지정된 IP만 사용이 가능하다. 그렇기 때문에 고정된 IP와 DNS를 사용해야한다. IP설정을 위해서 일일이 찾아 들어가서 바꾸는 것보다 한번에 설정가능하도록 바꾸는 명령어 및 배치파일이다.
[고정 IP / DNS 설정 명령어]
1. 고정 IP설정
Netsh interface ip set address 네트워크이름 static IP주소 서브넷마스크 게이트웨이주소
예)
Netsh interface ip set address "이더넷" static 192.168.1.100 255.255.255.0 192.168.1.2
2. 고정 DNS설정
- 주 DNS
Netsh interface ip set dns 네트워크이름 static DNS주소 primary
- 보조 DNS
Netsh interface ip add dns 네트워크이름 DNS주소 index=2
예)
주DNS 설정
Netsh interface ip set dns "이더넷" static 8.8.8.8 primary
보조DNS 설정
Netsh interface ip add dns "이더넷" 1.1.1.1 index=2
[자동 IP /DNS 설정 명령어]
> dhcp 프로토콜 이용
source를 dhcp로만 설정해주면 된다!!
1. 자동 IP설정
netsh interface ip set address name= “이더넷” source= dhcp
2. 자동 DNS 설정
netsh interface ip set dns name= “이더넷” source= dhcp
[for 문]
** 여기서 제일 어려웠던거!!
for문을 이래하기 위해서 cmd 창에 for /? 이라고 쳐서 확인해보자!
FOR 명령어 : 파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FOR %변수 IN (집합) DO 명령어 [명령어 매개 변수]
* 일괄 프로그램에서 for 명령을 쓰려면, %변수 대신 %%변수를 지정하십시오.
> 처음에 무슨말인지 몰랐는데 이것저것 해봤더니 cmd DOS 창에서 실행할 때는 %변수를 쓰면 되고, 일괄프로그램(.bat파일)에서 실행할 때는 %%변수를 쓰면 된다!
FOR /D %변수 IN (집합) DO 명령어 [명령어 매개 변수]
FOR /R [[드라이브:]경로] %변수 IN (집합) DO 명령어 [명령어 매개 변수]
FOR /L %변수 IN (시작, 단계, 끝) DO 명령 [명령어 매개 변수]
FOR /F ["옵션"] %변수 IN (파일-집합) DO 명령 [명령어 매개 변수]
FOR /F ["옵션"] %변수 IN ("문자열") DO 명령어 [명령어 매개 변수]
FOR /F ["옵션"] %변수 IN ('명령어') DO 명령어 [명령어 매개 변수]
* 빨간색 글자가 이번 batch 파일을 사용할 때 사용할 FOR명령어 방식
D : 디렉터리(폴더), R : 드라이브 경로, L : 단계별로 증가/감소하는 시작부터 끝까지 일련의 숫자, F : 파일/문자열/명령어
옵션
eol=c
skip=n
delims=xxx
tokens=x, y, m-n
usebackq
등등
* FOR문을 활용한 예시
- tokens는 각 줄에서 어떤 토큰이 반복에 대한 for 구문으로 전달이 되는지를 지정합니다.
- delims는 구분 문자 집합을 지정. (for문에서 나누는 문자.)
예)
HELLO WORLD ! 에서 구분문자를 " "(띄어쓰기)로 지정을하면 : delims =" "이고, delim로 나뉘는 부분이 HELLO / WORLD / ! 이렇게 3부분이다. 여기서 tokens은 delims로 나뉜 후의 몇번째인지를 지정한다.
예를 들어 tokens=2라고 지정하면 뒤에 %%i로 변수명을 선언 하고 echo %%i로 출력하면 WORLD가 나타나게 된다. 만약 tokens=1,3,이라고 지정고 변수명을 %%i라고 지정 후에 echo %%i %%j를 출력하면 Hello !가 나타난다.
파일내용(1.txt)
This is a test page.
FOR문 실행
for /f "tokens=2 delims= " %%i in (1.txt) do @echo %%i
결과 : is
for /f "tokens=1 delims= " %%i in (1.txt) do @echo %%i
결과 : This
for /f "tokens=1,2,3 delims= " %%i in (1.txt) do @echo %%j
결과: is
for /f "tokens=3-5 delims= " %%i in (1.txt) do @echo %%k
결과: page.
for /f "tokens=4 delims= " %%i in (1.txt) do @echo %%i
결과: test
for /f "tokens=4 delims= " %%i in (1.txt) do @echo %%j
결과: %j
for /l %i in (1,1,5) do @ echo %i
결과 : 1 2 3 4 5
for /l %a in (5,-2,0) do @ echo %a
결과 : 5 3 1
[고정 IP, DNS 설정 해주는 BATCH 파일 만들기]
-기능
1. 설정할 IP를 입력받는다.
2. 네트워크 id를 찾는다. wmic nic
3. 입력받은 ip에 해당하는 서브넷, 게이트웨이 설정
4. 회사 내 DNS값 설정
*참고 코드는 UTF-8로 하면 깨지기 때문에 ANSI로 인코딩 해야한다.
@echo off setlocal
@cls title 고정 IP 및 DNS 설정 프로그램
echo ===============================================
echo 고정 IP 및 DNS 설정하기
echo.
echo *** 랜선이 연결된 상태에서 설정하세요.***
echo ===============================================
set /p inputIP = 사용할 IP를 입력해주세요.:
echo.
echo ... 네트워크 설정 중입니다..
:: 네트워크이름 찾기
for /f "tokens=2 delims==" %%a in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get NetConnectionId /format:list') do set netId=%%a
:: IP 설정 입력받은 IP x.x.x.x에서 " . "으로 구분하고,
:: 회사 IP 정책에 따라 3번째가 게이트웨이가 변경됨.
for /f "tokens=1,2,3,4 delims=." %%i in ("%inputIP%") do netsh interface ip set address "%netID%" static %inputIP% 255.255.255.0 %%i.%%j.%%k.2
:: 고정DNS
netsh interface ip set dns "%netID%" static 8.8.8.8 primary
netsh interface ip add dns "%netID%" 1.1.1.1 index=2
echo.
echo ... IP 및 DNS 설정이 완료되었습니다...
echo.
pause
code in github : https://github.com/jennana404/batch/blob/main/setting_pc/IPandDNS_Setting.bat
wmic nic where "NetEnabled=TRUE and AdapterTypeId=0" get NetConnectionId
[AdapterTypeId - AdapterType]
1 {'Token Ring 802.5'}
2 {'Fiber Distributed Data Interface (FDDI)'}
3 {'Wide Area Network (WAN)'}
4 {'LocalTalk'}
5 {'Ethernet using DIX header format'}
6 {'ARCNET'}
7 {'ARCNET (878.2)'}
8 {'ATM'}
9 {'Wireless'}
10 {'Infrared Wireless'}
11 {'Bpc'}
12 {'CoWan'}
13 {'1394'}
[NetConnectionStatus]
* Connecting (1)
* Connected (2)
* Disconnecting (3)
* Hardware Not Present (4)
* Hardware Disabled (5)
* Hardware Malfunction (6)
* aMedia Disconnected (7)
* Authenticating (8)
* Authentication Succeeded (9)
* Authentication Failed (10)
* Invalid Address (11)
* Credentials Required (12)
[NetEnabled]
TRUE/FALSE
[NetConnectionID] : Connected Network Name
[참고 사이트]
https://m.blog.naver.com/sung_mk1919/221773181482
https://janggom.tistory.com/m/460
https://answer-id.com/ko/54765704