またはその行がその起源(国)と一緒に、サーバからのすべての禁止IPアドレスを表示します。この
zcat /var/log/fail2ban.log* | gawk '/.*Ban.*/ {print $7};' | sort | uniq -c | sort | gawk '{ "geoiplookup " $2 "| cut -f2 -d: " | getline geoip; print $2 "\t\t" $1 " " geoip}'
のように、AWKのgetline
と変数に出力をretriveはbashのようにパイプ|
を使用geoip-binパッケージを使用します。
gawk '{ "geoiplookup " $2 "| cut -f2 -d: " | getline geoip; print $2 "\t\t" $1 " " geoip}'
それは単純に言う:コマンド"geoiplookup 182.193.192.4 | -f2 -d:"
($ 2あなたが推測可能ように置換されます)を実行し、そのコマンドの結果を置く
そのワンライナーの最後の部分は、私たちに影響を与えるものですgeoip(| getline geoip
ビット)。次に、何かと何かをgeoip
変数の中に印刷します。
完全な例と結果は、私が書いた記事hereです。
最初に検索すると、既に100の解決策があります。 – BMW
なぜあなたはawkがこの仕事のための正しいツールだと思いますか? 'xargs'やシンプルなシェル' readline'ループのほうがはるかに簡単であるようです。 –
反対側:なぜこの仕事にwcが最適なツールだと思いますか? awk組み込みの変数や関数のほうがずっと簡単だろうか? –