- blogs:
- cles::blog
« ライブドアがブログのIPブラックリストサービスを開始 :: 風邪ダウン »
2008/10/29

IPアドレスのリストからCIDR表現を作る(Perl編)

ちょっと仕事でIPアドレスのリストからACLを作るという作業をしなければならなかったのですが、大した作業でなはないとたかをくくっていたら、IPアドレスの量があまりにも膨大だったで参ってしまいました。しかもIPアドレスはきれいにサブネットで纏まっているわけでもなく、手作業でサブネットを計算するのも現実的ではなさそう。ということで、これをスクリプトで処理をして、なんとかCIDR形式にまとめられないかといろいろと探してみました。
こういう処理自体はルーティングテーブルの圧縮なんかでも使われているので、何か適当なライブラリがないかと探してみたところ、perlのNet::CIDR::Liteが使えそうだということがわかったので、簡単なスクリプトを書いてみました。
† コードのサンプル
今回作ったコードのサンプルはこんな感じ。
ipmerge.pl
#!/usr/bin/perl
use Data::Dumper;
use Net::CIDR::Lite;
$Data::Dumper::Terse = 1;
my $cidr = Net::CIDR::Lite->new;
while(<>){
chomp;
$cidr->add_ip($_);
}
print Dumper($cidr->list);
下記のようなIPアドレスのリストを処理すると、IPアドレスの範囲をCIDR形式で得ることができます。
iplist.txt
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
192.168.0.16
192.168.0.17
192.168.0.18
perl ipmerge.pl < iplist.txtの実行結果
'192.168.0.0/28'
'192.168.0.16/31'
'192.168.0.18/32'
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2783
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« ライブドアがブログのIPブラックリストサービスを開始 :: 風邪ダウン »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(114457)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112972)
3 . 年次の人間ドックへ(112396)
4 . 2023 年分の確定申告完了!(1つめ)(111963)
5 . 三菱鉛筆がラミーを買収(111836)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(112972)
3 . 年次の人間ドックへ(112396)
4 . 2023 年分の確定申告完了!(1つめ)(111963)
5 . 三菱鉛筆がラミーを買収(111836)
cles::blogについて
Referrers