2012-04-03 2 views
1

J'écris une petite application pour automatiser un grand nombre de choses que nous devons faire quotidiennement lors de la mise en place de nouvelles machines. J'ai 18 nouvelles boîtes à installer maintenant, donc j'ai vraiment besoin d'ajouter cette petite fonctionnalité qui me permet d'ajouter plus facilement des adresses IP.Ajout par programme d'adresses IP statiques

Ma fonction qui génère le sous-réseau basé sur le numéro de bloc fonctionne bien, mais j'aimerais pouvoir entrer quelque chose comme 192.168.1.10/29 et l'ajouter toutes les 5 adresses IP à la carte réseau. Ma fonction pour ajouter l'IP fonctionne très bien, mais ma question est ...

Dois-je le coder manuellement comme ceci? (Il est évident que le code psuedo et non un exemple de travail)

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

Quelles sont les 5 adresses à ajouter pour votre exemple, '192.168.1.10/29'? – mellamokb

+0

Voici l'un de nos blocs 72.26.196.160/29. Donc .162 - .166 seraient les adresses que je devais ajouter à la carte réseau. –

+0

Puisque '72.26.196.160/29' inclut comme hôtes valides tous ceux compris dans la plage' .161' '' .166', comment le programme devrait-il connaître la plage réelle devrait seulement inclure '.162' à' .166'? – mellamokb

Répondre

0

J'ai fouetté une classe qui peut interpréter une adresse de sous-réseau et retourner une collection dénombrable des adresses représentées par ce sous-réseau. Ainsi, par exemple, le sous-réseau IP 192.168.1.10/29 doit renvoyer toutes les adresses après (et inclus) 192.168.1.10 qui appartiennent au sous-réseau représenté par /29, qui est le masque 255.255.255.248. Il existe six hôtes valides dans ce sous-réseau, .9 à .14. Donc, la liste retournée serait

192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 

Voici l'exemple de code que je utilise (en LINQPad): http://pastebin.com/d6EE2bpj, et la sortie de l'échantillon généré par le code de test:

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

Le code génère le bit masque à la volée en fonction de la taille du sous-réseau, il devrait donc être complètement générique pour toute adresse IP de départ et toute taille de sous-réseau.

+0

Excellent, merci beaucoup! –

+0

@BrettPowell: Je voulais juste faire un suivi, avez-vous eu l'occasion d'utiliser le code en production, et cela fonctionne-t-il comme prévu? – mellamokb

Questions connexes