2012-04-03 9 views
1

私は、新しいマシンをセットアップするときに毎日行う必要のある多くのものを自動化するための小さなアプリケーションを作成しています。私は18個の新しいボックスを用意していますので、IPアドレスを簡単に追加できるようにするために、この小さな機能を追加する必要があります。スタティックIPをプログラムで追加する

ブロック番号に基づいてサブネットを生成する私の機能はうまくいきますが、192.168.1.10/29のようなものを入力して、5つのIPアドレスすべてをNICに追加できるようにしたいと考えています。 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

私は、サブネットアドレスを解釈し、そのサブネットに代表されるアドレスの列挙コレクションを返すことができるクラスを手早くました。したがって、たとえば、サブネット192.168.1.10/29は、/29で表されるサブネットに属する192.168.1.10の後のすべてのアドレス(およびそれを含む)を返します。このアドレスはマスク255.255.255.248です。このサブネットには有効なホストが6つあります(.9.14)。 http://pastebin.com/d6EE2bpjを、およびテストコードによって生成されたサンプル出力:

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

コードが生成さそう一覧は

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

関連する問題