
我正在尋找一個快速腳本這將解析一個大的mail.log,並傳回該部分兩個指定時間戳之間。我想在我的所有郵件伺服器上運行它,並讓它們將相關日誌部分複製到中央位置以進行進一步分析。
我用 bash 寫了一些東西,可以工作,但速度很慢。
有人知道嗎任何已經存在的東西為了實現這個目標 - 還是我需要學習 Perl 並自己編造一些東西?
(我不會把這個放在SO上,因為我還沒有達到我想要的程度寫任何程式碼 - 只是尋找其他人已經在使用的東西)
答案1
我喜歡 awk :)
對於我的日誌,其格式為:
Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........
我會用:
awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog
想必您可以根據需要進行調整,例如,如果您不按天拆分日誌。
獎金:
Apache 格式,我剛好使用過:
xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log
答案2
對於特定日期範圍並列印 > 輸出文件
(我不能在上面的答案中添加評論,否則我會這樣做)
華泰
awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log
cat m_range.log
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...