のを探していたら、ここのページにズバリありました。
・Perlスクリプトで得る方法
perl -e 'use Net::CIDR;foreach(Net::CIDR::cidr2octets("192.168.0.64/28")){print "$_\tREJECT\n"}'うちの環境では動きませんでした。
何かframeworkが入っていないからだと思います(^^ゞ
おそらく Net::CIDR がインストールされていなかったんだと想像しました。インストールは以下で OK です。
$ cpan Net::CIDR
で、one-liner で実行すると。
$ perl -MNet::CIDR -le 'print "$_\tREJECT" for (Net::CIDR::cidr2octets("192.168.0.1/28"))'
192.168.0.0 REJECT
192.168.0.1 REJECT
192.168.0.2 REJECT
192.168.0.3 REJECT
192.168.0.4 REJECT
192.168.0.5 REJECT
192.168.0.6 REJECT
192.168.0.7 REJECT
192.168.0.8 REJECT
192.168.0.9 REJECT
192.168.0.10 REJECT
192.168.0.11 REJECT
192.168.0.12 REJECT
192.168.0.13 REJECT
192.168.0.14 REJECT
192.168.0.15 REJECT
ちょっとした確認に便利ですねぇ。 あとは IP アドレスの範囲から CIDR を求める関数もあります。
$ perl -MNet::CIDR -le 'print join( qq{\n}, Net::CIDR::range2cidr("192.68.0.0-192.68.255.255", "10.0.0.0-10.3.255.255"))'
192.68.0.0/16
10.0.0.0/14
今ご紹介しました range2cidr や cidr2octets ほかにもいろいろあります。サンプルは perldoc Net::CIDR にて。