IP::Countryには”whois_filenames”と呼ばれるDB更新用のスクリプトが同封されているがインストールされないためcpanでインストール後は非常に困る。その上、更新用スクリプトを単純にコピーして実行しても正しく動作しないため、今回アップデート用のスクリプトを改良しインストール後でも使用出来るようにしておく。
なお、更新用スクリプトはメモリを非常に使うためマシン側では物理的に4GB以上のメモリを搭載している必要があるかもしれない。
“dbmScripts”ディレクトリの存在確認
# ls ~/.cpan/build/IP-Country-2.27/dbmScripts/
“IP::Country”のインストール場所の確認
# ls /usr/lib/perl5/site_perl/5.8.8/IP/
“dbmScripts”ディレクトリのコピー
# cp -R ~/.cpan/build/IP-Country-2.27/dbmScripts/ /usr/lib/perl5/site_perl/5.8.8/IP/
“dbmScripts”ディレクトリへ移動
# cd /usr/lib/perl5/site_perl/5.8.8/IP/dbmScripts/
アップデート用スクリプトをbashにて作成
# vi whois_filenames
#!/bin/bash
wget ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.inetnum.gz && gunzip ripe.db.inetnum.gz
wget ftp://ftp.ripe.net/pub/stats/afrinic/delegated-afrinic-extended-latest
wget ftp://ftp.ripe.net/pub/stats/apnic/delegated-apnic-extended-latest
wget ftp://ftp.ripe.net/pub/stats/arin/delegated-arin-extended-latest
wget ftp://ftp.ripe.net/pub/stats/lacnic/delegated-lacnic-extended-latest
perl ipcc_loader.pl && perl ipcc_maker.pl && perl ipauth_loader.pl && perl ipauth_maker.pl
rm -f *extended-latest* ripe.db.inetnum* sorted_*.txt*
読み込むファイル名が異なるため修正
# vi ipauth_loader.pl
69行目付近
read_reg('delegated-afrinic-extended-latest'); # 修正
read_reg('delegated-lacnic-extended-latest'); # 修正
read_reg('delegated-apnic-extended-latest'); # 修正
read_ripe();
read_reg('delegated-arin-extended-latest'); # 修正
join_neighbours();
punch_holes();
optimize();
output();
# vi ipcc_loader.pl
69行目付近
read_reg('delegated-afrinic-extended-latest'); # 修正
read_reg('delegated-lacnic-extended-latest'); # 修正
read_reg('delegated-apnic-extended-latest'); # 修正
read_ripe();
read_reg('delegated-arin-extended-latest'); # 修正
join_neighbours();
punch_holes();
optimize();
output();
DBのパスが違うため”ipauth_maker.pl”と”ipcc_maker.pl”のパスを修正
# vi ipauth_maker.pl
32行目付近
print "Saving ultralite IP registry to disk\n";
my $ip = new IO::File "> ../Authority/ipauth.gif"; # 修正
if (defined $ip) {
binmode $ip;
print $ip pack("N",time()); # returned by $obj->db_time()
$tree->printTree($ip);
$ip->close();
} else {
die "couldn't write IP registry:$!\n";
}
44 行目付近
print "Saving ultralite country database to disk\n";
open (CC, "> ../Authority/auth.gif") # 修正
or die ("couldn't create authority database: $!");
binmode CC;
foreach my $country (sort $tree->get_countries()){
print CC substr(pack('N',$tree->get_cc_as_num($country)),3,1).$country;
}
# vi ipcc_maker.pl
33行目付近
print "Saving ultralite IP registry to disk\n";
my $ip = new IO::File "> ../Country/Fast/ip.gif"; # 修正
if (defined $ip) {
binmode $ip;
print $ip pack("N",time()); # returned by $obj->db_time()
$tree->printTree($ip);
$ip->close();
} else {
die "couldn't write IP registry:$!\n";
}
45行目付近
print "Saving ultralite country database to disk\n";
open (CC, "> ../Country/Fast/cc.gif") # 修正
or die ("couldn't create country database: $!");
binmode CC;
foreach my $country (sort $tree->get_countries()){
print CC substr(pack('N',$tree->get_cc_as_num($country)),3,1).$country;
}
作成した”db_update”に実行権を与える
# chmod 755 whois_filenames
アップデート実行
# sh whois_filenames
__追記__
2016/06/16 delegated-arin-latestなどがextended-latest形式に変更となっていたため記事の一部を更新しました
最近のコメント