임의의 보조 IP를 인터페이스에 할당하고 제거하는 스크립트


2

나는 임의로 시스템에 2 차 IP 주소를 할당하고 제거 할 수있는 스크립트를 작성하는 방법을 알아 내려고하고있다. 배치 스크립팅에 가장 익숙하기 때문에 가능한 경우 솔루션에 집중할 것입니다.

나는 사용자 입력을 받아서 새로운 IP 주소와 게이트웨이를 설정하는 방법을 알아 냈다.

아래의 배치 스크립트는 "LAN"이라는 인터페이스 용으로 작성되었습니다.

SET /P NEW-IPADDR="Enter IP:"
SET /P NEW-MASK="Enter Subnet Mask:"
SET /P NEW-GW="Enter Gateway:"
netsh interface ip add address name=LAN addr=%NEW-IPADDR% mask=%NEW-MASK% gateway=%NEW-GW% gwmetric=0
PAUSE

그만큼 PAUSE 가 삽입되어 오류를 확인할 수 있습니다. netsh 콘솔 창이 자동으로 종료되기 전에.

스크립트가 오류 검사 (빈 사용자 입력을 해결하거나 입력이 IP 주소의 패턴과 일치하는지 확인)를 위해 몇 가지 추가 명령문을 사용할 수 있다고 확신합니다. 하지만 지금 당장 생각해 보면 걱정되는 부분은 이전에 설정된 보조 IP 주소를 삭제하는 방법입니다.

한 가지 쉬운 옵션은 매번 모든 IP를 지우도록 스크립트를 설정하고 보조 IP를 요구하기 전에 기본 IP를 자동으로 설정하는 선을 미리 작성하는 것입니다. 이상적으로 스크립트를 보조 IP로만 작업하고 싶습니다.

옵션 2는 위의 스크립트의 마지막 줄을 다음과 같이 변경하는 것입니다.

ECHO "Secondary IP address configured.  Press any key to remove secondary IP."
PAUSE
netsh interface ip delete address name=LAN addr=%NEW-IPADDR% gateway=%NEW-GW%

그러나이 작업을 수행하는 동안 스크립트가 비정상적으로 종료되지 않을 것이라고 신뢰해야합니다. PAUSE. 정확히 당신이 정말로 의지 할 수있는 것이 아닙니다.

또 다른 옵션은 스크립트가 나중에 구성 할 보조 IP를 영구적으로 저장하여 나중에 값을 가져오고 해당 매개 변수로만 작업 할 수 있도록하는 것입니다. 값을 영구 저장 장치로 가져 오는 것은 쉽습니다 ( ECHO "%NEW-IPADDR%" > SecondaryIP.txt && ECHO "%NEW-MASK%" >> SecondaryIP.txt && ECHO "%NEW-GW%" >> SecondaryIP.txt )하지만 지금은 두 가지 문제가 있습니다.

  1. 배치 스크립트에서 사용할 수있는 방식으로 해당 텍스트 파일에서 데이터를 가져 오는 방법을 모르겠습니다. (이것은 쉽게 고칠 수 있다고 확신합니다.)
  2. 이것은 스크립트가 보조 IP를 접촉하는 유일한 것임을 의지합니다. 스크립트가 정상적으로 종료하는 것보다 조금 더 신뢰할 만하지만 여전히 100 %는 아닙니다.

이상적인 옵션은 "보조 IP"가 아닌 "기본 IP"를 인식 할 수있는 스크립트입니다. 후자에 맞붙다. 이것을 할 수있는 방법이 있습니까?

타사 도구를 전혀 사용하지 않아도되는 표준 Windows XP 빌드 이상과 호환되는 방법이 필요합니다. PowerShell에 대해 더 많이 배우고 싶습니다.이 도구를 사용하는 시스템에 PowerShell이 ​​설치되어 있습니다. 따라서 PowerShell 기반 솔루션도 환영합니다.

답변:


1

나는 완벽한 대답을 제시 할 수는 없지만 이것이 올바른 방향으로 나아갈 수 있도록 도와 줄 수 있습니다.

너는 사용할 수있어. netsh PowerShell에서 현재 구성을 덤프합니다.

netsh interface ipv4 dump >C:\netsh.txt

이렇게하면 다음과 같은 내용을 얻을 수 있습니다.

# ----------------------------------
# IPv4 Configuration
# ----------------------------------
pushd interface ipv4

reset
set global icmpredirects=enabled
add route prefix=0.0.0.0/0 interface="WAN" nexthop=192.168.1.1 publish=Yes
set subinterface interface= subinterface=ethernet_6 mtu=1492
add address name="WAN" address=192.168.1.200 mask=255.255.255.0
add address name="WAN" address=192.168.1.210 mask=255.255.255.0


popd
# End of IPv4 configuration

넌 할 수있어 'grep''sed' 결과 텍스트 파일에 대한 작업, 여기에 정보를 사용 . 이것은 위에서 볼 수 있듯이 주소의 줄이 동일한 형식을 가지고 있기 때문에 더 이상 시간을 들이지 않고 자세히 설명 할 수없는 비트입니다. 스크립트는 주소 행을 변수로 grep해야하며 두 번째 변수 만 sed합니다.

그런 다음 편집 된 구성 스크립트를 실행할 수 있습니다.

netsh exec C:\netsh.txt

유의 사항 ipconfig 다시 부팅 할 때까지 새 구성 데이터와 이전 구성 데이터가 모두 표시되지만 GUI에 올바르게 표시되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.