Apache-2.2
需要 Apache 日誌/Grep 命令幫助
我需要能夠查看某個 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。