Apache-2.2

需要 Apache 日誌/Grep 命令幫助

  • January 31, 2017

我需要能夠查看某個 IP 在某一天發出的所有請求。

我對 grep 不熟悉,想知道是否有人可以幫幫我。

無論如何我可以將搜尋結果限制在特定日期嗎?

對於這樣的問題,我喜歡 awk;您可以在單個命令中匹配多個欄位。如果我們假設您使用的是標準 Apache 日誌格式,則欄位 1 是 IP 地址,欄位 5 是訪問日期:

$ awk '$1 ~ /8\.8\.8\.8/ && $4 ~ /15\/Dec\/2009/ { print }' /var/log/apache2/access.log

awk處理文件中的每一行並將其在空白處拆分為名為$1$2等的變數。您可以將它們與$2 ~ /REGEX/語法匹配,並且可以匹配多個欄位。

Apache 以荒謬的 DD/Mon/YYYY 格式儲存日期,因此您需要對/字元進行轉義,這使得匹配日期有點笨拙。

一個 solitary{ print }將列印整行(awk 也將其稱為$0)。如果您只想發出特定欄位,則可以將它們添加到 print 語句中。如果您只想列印請求的 URI,您可以:

$ awk '$1 ~ /8\.8\.8\.8/ && $4 ~ /15\/Dec\/2009/ { print $7 }' /var/log/apache2/access.log

由於請求 URI 是日誌中的欄位 7。

引用自:https://serverfault.com/questions/94724