ip.zip
使い方ですが
D:\src>ip.pl -s 10.1.0.0 -e 10.11.200.255こんな感じで、10.1.0.0から10.11.200.255をサブネット表記するにはこうしたらいいというリストを出してくれます(2つ目は192.1.0.0から192.20.255.199の例)。ネットワークなんて触ってると、ルーティングテーブルとかACLとかで、オーバーヘッド(ペナルティ)を減らしたいという意図からできる限り行数を短くしたい事も多いし、この機会に作っておこうとか、そんな感じですが。
10.1.0.0/16
10.2.0.0/15
10.4.0.0/14
10.8.0.0/15
10.10.0.0/16
10.11.0.0/17
10.11.128.0/18
10.11.192.0/21
10.11.200.0/24
D:\src>ip.pl -s 192.1.0.0 -e 192.20.255.199
192.1.0.0/16
192.2.0.0/15
192.4.0.0/14
192.8.0.0/13
192.16.0.0/14
192.20.0.0/17
192.20.128.0/18
192.20.192.0/19
192.20.224.0/20
192.20.240.0/21
192.20.248.0/22
192.20.252.0/23
192.20.254.0/24
192.20.255.0/25
192.20.255.128/26
192.20.255.192/29
ま、そもそもIPアドレス設計の段階で考慮されていればこんな涙ぐましい努力は必要無いんですけど、現実問題としては既に存在するネットワークをどうこうするという話が多いわけで、過渡期的にぐちゃぐちゃなネットワークになってしまう事なんて良くある話で。ま、そんな意味では必要悪というか仕方ないというか。。。
ちなみにNet::CIDRとか使えばもうちょっと簡単そうなんですが、ここでは使ってません。
CPANとか使えない環境もあるので。ActivePerlもNet::CIDRを使おうとすると・・・無いって怒りました(^^;
Net::CIDRを使う場合は
use Net::CIDR;という感じで使えるようです。
print join("\n", Net::CIDR::range2cidr("192.168.10.100-192.168.10.200")) . "\n";
コメント