2012-04-03 10 views
1

Ich schreibe eine kleine Anwendung, um viele der Dinge, die wir täglich tun müssen, beim Einrichten neuer Maschinen zu automatisieren. Ich habe jetzt sage und schreibe 18 neue Boxen eingerichtet, also muss ich wirklich diese kleine Funktion hinzufügen, die es mir erlaubt, IP-Adressen leichter hinzuzufügen.Programatisch statische IPs hinzufügen

Meine Funktion, die das Subnetz basierend auf der Blocknummer erzeugt, funktioniert gut, aber ich möchte in der Lage sein, etwas wie 192.168.1.10/29 einzugeben und es alle 5 IP-Adressen der NIC hinzufügen lassen. Meine Funktion zum Hinzufügen der IPs funktioniert gut, aber meine Frage ist ...

Muss ich es manuell so codieren? (Offensichtlich Pseudo-Code und kein funktionierendes Beispiel)

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

Welche 5 Adressen würden für Ihr Beispiel '192.168.1.10/29' hinzugefügt? – mellamokb

+0

Hier ist einer unserer Blöcke 72.26.196.160/29. Also .162 - .166 wären die Adressen, die ich zum NIC hinzufügen musste. –

+0

Da '72.26.196.160/29' alle Hosts im Bereich' .161' bis '.166' als gültige Hosts enthält, wie soll das Programm den tatsächlichen Bereich kennen, sollte nur' .162' bis '.166' enthalten? – mellamokb

Antwort

0

Ich habe eine Klasse aufgepeitscht, die eine Subnetz-Adresse und geben eine zählbare Auflistung der Adressen, die durch dieses Subnetz interpretieren kann. So sollte zum Beispiel das IP-Subnetz 192.168.1.10/29 alle Adressen nach (und einschließlich) 192.168.1.10 zurückgeben, die in das Subnetz fallen, das durch /29 repräsentiert wird, welches die Maske 255.255.255.248 ist. Es gibt sechs gültige Hosts in diesem Subnetz, .9 bis .14. So kehrte die Liste wäre

192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 

Hier ist der Beispielcode ist verwende ich (in LINQPad): http://pastebin.com/d6EE2bpj und die Probenausgabe durch den Testcode erzeugt:

==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 

Der Code erzeugt die Bit-Maske im laufenden Betrieb auf der Grundlage der Subnetzgröße, so sollte es vollständig generisch für jede Start-IP-Adresse und jede Subnetzgröße sein.

+0

Ausgezeichnet, vielen Dank! –

+0

@BrettPowell: Wollte nur verfolgen, haben Sie eine Chance, den Code in der Produktion zu verwenden, und funktioniert es wie erwartet? – mellamokb