2012-04-03 2 views
1

저는 새로운 시스템을 설치할 때 매일해야 할 일들을 자동화하기 위해 작은 응용 프로그램을 작성하고 있습니다. 지금 설치하기에 무려 18 개의 새 상자가 있으므로 IP 주소를 더 쉽게 추가 할 수 있도록이 작은 기능을 추가해야합니다.프로그래밍 방식으로 고정 IP 주소 추가

블록 번호를 기반으로 서브넷을 생성하는 내 기능은 정상적으로 작동하지만 192.168.1.10/29와 같은 내용을 입력하고 NIC에 5 개의 IP 주소를 모두 추가 할 수 있기를 바랍니다. IP의 작품을 추가하기위한 내 기능은 괜찮지 만 내 질문은 ...

이렇게 수동으로 코딩해야합니까? (물론 사이비 코드가 아닌 작업 예)

int 29block = 5 
int 28block = 12 

for (i = 0; i<29block; i++) 
{ 
    string ip = ipinputbox.text; 
    ip = ip + 2 + i; // 2 being the value to compensate for gateway/etc. 
    AddIpAddress(ip); 
} 

enter image description here

+0

예를 들어 '192.168.1.10/29'에 5 개의 주소가 추가됩니까? – mellamokb

+0

다음은 우리 블록 72.26.196.160/29 중 하나입니다. 따라서 .162 - .166은 NIC에 추가해야하는 주소입니다. –

+0

'72.26.196.160/29'는'.161'에서'.166' 범위의 유효한 호스트를 모두 포함하기 때문에 실제 범위를 아는 프로그램은'.162'에서'.166'까지만 포함해야합니다? – mellamokb

답변

0

나는 서브넷 주소를 해석하고 해당 서브넷에 의해 표현 된 주소의 열거 모음을 반환 할 수있는 클래스를 채찍질했습니다. 예를 들어, ip 서브넷 192.168.1.10/29/29으로 표시된 서브넷에 속한 192.168.1.10 이후의 모든 주소 (마스크 포함)를 255.255.255.248으로 반환해야합니다. 이 서브넷에 유효한 호스트가 6 개 있습니다 (.9 ~ .14).

==192.168.1.10/29== 
192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 
==72.26.196.160/29== 
72.26.196.161 
72.26.196.162 
72.26.196.163 
72.26.196.164 
72.26.196.165 
72.26.196.166 

이 코드가 생성 테스트 코드에 의해 생성 http://pastebin.com/d6EE2bpj, 샘플 출력 : 그래서 목록은 여기

192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 

내가 (LINQPad에) 사용하고 샘플 코드가 될 것입니다 반환 서브넷 크기를 기반으로 즉석에서 비트 마스크를 생성하므로 모든 시작 IP 주소와 모든 서브넷 크기에 대해 완전히 일반화되어야합니다.

+0

우수, 정말 고마워요! –

+0

@BrettPowell : 후속 작업을 수행하기 위해 프로덕션에서 코드를 사용할 기회를 얻었습니까? 예상대로 작동합니까? – mellamokb

관련 문제