syslogからIPアドレスを見つけて国別コードを付加する

利用目的

各種ログ調査時にIPアドレスから国別コードを確認するために、パイプに食わせれば項目位置を指定せずとも国判定してコード付与できるようにしたい

プロンプト

linux環境において、syslogなどのテキストログ文字列をパイプ処理等の標準入力から得てIPアドレスと思しき文字列(ワード)をピックアップして国判定し、その文字列(ワード)の後ろに国別コードを付加して標準出力へ出すスクリプトを bashおよび perlの二種類で記述してください。
perlについては Geo::IP モジュールを使用してください。

プロンプトのポイント

「その文字列(ワード)の後ろに国別コードを付加して」
(実現せず……)

達成された成果

ほぼそのまま使えるスクリプトを作成してくれた。

!/bin/bash

テキストログから標準入力を受け取ります

while read -r line; do
# IPアドレスのみを抽出します
ips=$(echo "$line" | grep -oP '\b(?:[0-9]{1,3}.){3}[0-9]{1,3}\b')

# 各IPアドレスに対して国別コードを検索し、結果を出力します
for ip in $ips; do
    country=$(geoiplookup $ip | awk -F ': ' '{print $2}')
    # 元の行に国コードを付加して出力します
    echo "$line - $ip [$country]"
done

done

使用上のヒントやアドバイス

「その文字列(ワード)の後ろに国別コードを付加」してほしかったのだが行末に付加されてしまった。
追加で念押しをすると、行中からのピックアップをやめてしまった…… orz

レビューを書く
1
2
3
4
5
送信
     
キャンセル

レビューを書いてみましょう

AIアセットラボ
Average rating:  
 0 reviews