サーバのログに記録されているIPアドレスが、どの国のものか調べたいことがあります。
そこで、IPアドレスを抜き出して、その国名を表示するperlスクリプトを作成しました。
準備
スクリプト ip2countryname.pl を下記からダウンロードします。
https://skydrive.live.com/redir?resid=D54242E7C106EE41!108&authkey=!APdxeMzSUCDycgs
また、スクリプトで使用する為の、世界の国別 IPv4 アドレス割り当てリストのCIDR形式のファイルを取得します。
尚、このファイルはiptables - 国内からの接続のみ許可して海外からの接続を遮断するの記事でも使用していますので、そのファイルがある場合はそちらを使用できます。
wget -q -N http://nami.jp/ipv4bycc/cidr.txt.gz gunzip -q -f -c cidr.txt.gz > cidr.txt
実行
実行は、IPアドレスが含まれたテキストを以下のようにパイプで渡してください。
cat /var/log/secure | perl ip2countryname.pl
結果は以下のように出力されます。
テキスト中のIPアドレスを抜き出して、国名とともに表示します。
実際は xx.xx.xx.xx の箇所がIPアドレスになっています。
xx.xx.xx.xx 日本 xx.xx.xx.xx 中華人民共和国 xx.xx.xx.xx 日本 xx.xx.xx.xx 中華人民共和国 xx.xx.xx.xx カナダ
または、perl ip2countryname.pl のみで実行後、手入力でIPアドレスを入力して下さい。
1行入力するごとに、IPアドレスと国名を表示します。
コメント