このコマンドチェーンをより短くするか、より良いものにする方法はありますか?

このコマンドチェーンをより短くするか、より良いものにする方法はありますか?

私はこのコマンドチェーンを使用してボット/クローラトラフィックをフィルタリングし、IPアドレスを禁止します。このコマンドスキームをより効率的にする方法はありますか?

sudo awk -F' - |\\"' '{print $1, $7}' access.log | 
grep -i -E 'bot|crawler' | 
grep -i -v -E 'google|yahoo|bing|msn|ask|aol|duckduckgo' | 
awk '{system("sudo ufw deny from "$1" to any")}'

以下は、私が分析しているサンプルログファイルです。デフォルトのapache2 access.log

173.239.53.9 - - [09/Oct/2019:01:52:39 +0000] "GET /robots.txt HTTP/1.1" 200 3955 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.6.01001)"
46.229.168.143 - - [09/Oct/2019:01:54:56 +0000] "GET /robots.txt HTTP/1.1" 200 4084 "-" "Mozilla/5.0 (compatible; SemrushBot/6~bl; +http://www.semrush.com/bot.html)"
157.55.39.20 - - [09/Oct/2019:01:56:10 +0000] "GET /robots.txt HTTP/1.1" 200 3918 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
65.132.59.34 - - [09/Oct/2019:01:56:53 +0000] "GET /robots.txt HTTP/1.1" 200 4150 "-" "Gigabot (1.1 1.2)"
198.204.244.90 - - [09/Oct/2019:01:58:23 +0000] "GET /robots.txt HTTP/1.1" 200 4480 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
192.151.157.210 - - [09/Oct/2019:02:03:41 +0000] "GET /robots.txt HTTP/1.1" 200 4480 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)"
93.158.161.112 - - [09/Oct/2019:02:09:35 +0000] "GET /neighborhood/ballard/robots.txt HTTP/1.1" 404 31379 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
203.133.169.54 - - [09/Oct/2019:02:09:43 +0000] "GET /robots.txt HTTP/1.1" 200 4281 "-" "Mozilla/5.0 (compatible; Daum/4.1; +http://cs.daum.net/faq/15/4118.html?faqId=28966)"

ありがとう

ベストアンサー1

単一のawkコマンドを使用します。

awk -F' - |\"' 'tolower($7) ~ /bot|crawler/ && tolower($7) !~ /google|yahoo|bing|msn|ask|aol|duckduckgo/{system("sudo ufw deny from "$1" to any")}' access.log

botこれにより、7番目の列で、または(最初のコマンドが実行するアクション)項目のみがフィルタリングされます。crawlergrep〜しない限り7列確かにgoogle|yahoo|bing|msn|ask|aol|duckduckgo(2番目のコマンドが実行するアクション)が含まれていますgrep。一致する行はsudo ufw deny from "$1" to any最初の列で実行されます。 (最終awkコマンドの機能)

おすすめ記事