アクセス ログから IP アドレスを取得し、それらの IP アドレスがどこから来たのかを調べたいと考えています。これを行うには、次のスクリプトを使用します。
cat /var/log/nginx/access.log |awk '{ print $1}'|sort| uniq -c |sort -n -r | awk '{print $2}'
出力例は次のとおりです。
1.2.3.4
5.6.7.8
...
結果をnslookup
パイプライン|
コマンドで渡すことはできますが、結果が読みにくいため、host
コマンドを使用しようとしましたが、出力されるのはコマンドの使用方法に関する情報のみですhost
。
host
コマンドを使用して IP アドレスを一括解決するにはどうすればよいですか?
答え1
xargs を使用すると、標準入力からの入力がコマンドの引数に変換されます。
オプション -n は引数を 1 つ (改行で区切られる) に制限し、引数ごとに host を複数回呼び出すので、次のように実行できます。
cat /var/log/nginx/access.log |awk '{ print $1}'|sort| uniq -c |sort -n -r | awk '{print $2}' | xargs -n 1 host