現在のページの位置: くろねこスクエア Labs > 未分類 > GeoIP 用のアップデートスクリプト

くろねこスクエア Labs

GeoIP 用のアップデートスクリプト

ちょっとした環境変数を確認するために簡単なENV Checkerを置いてみたのですが、せっかくなので接続元地域の判定も入れてあります。

ただし、IPアドレスのデータベースを持つのは大変なので、MaxMind 社が配布している GeoLite Countryを利用させていただいています。このデータは毎月更新されるようなので、GeoIPの利用方法のシェルスクリプトを参考に、過去2ヶ月分を残し、それより前のデータを削除するスクリプトを追加してみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /bin/sh

# Remains at least these months
keepmonth=2

TMPDIR=$HOME/tmp
GEODIR=$HOME/share/GeoIP
DAT=GeoIP.dat

# Get timestamp
timestamp=`date +%Y%m`
old_date=`date "-d$keepmonth months ago" +%Y%m`

cd $TMPDIR

#/usr/bin/wget http://www.maxmind.com/download/geoip/database/$DAT.gz
/usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/$DAT.gz
if [ $? != 0 ] ; then
    echo "wget failed"
    exit 1
fi

/bin/gunzip $DAT.gz
if [ $? != 0 ] ; then
    echo "gunzip failed"
    exit 2
fi

cd $GEODIR
/bin/mv $DAT $DAT.$timestamp
/bin/mv $TMPDIR/$DAT .

rmfile=$DAT.$old_date

if [ -e $rmfile ]; then
rm -f $rmfile
fi

exit

1ヶ月ごとにcronを回せばデータベースを自動更新してくれるので、いわゆるメンテナンスフリーになります。

コメントをどうぞ

XHTML: 次のタグを使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

カテゴリー

Feed

メタ情報