利用目的
各種ログ調査時に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
レビューを書く | |
AIアセットラボ
Average rating: 0 reviews