[英]Python - last hour of postfix log
我正在尋找一種獲取由postfix創建的過去一個小時的日志日志文件的有效方法。 我想在python或bash中做到這一點。
到目前為止,我已經提取了保存在postfix日志中的月份和日期:
now_m = today.ctime().split()[1]
now_d = int(today.ctime().split()[2])
但被困在這里,需要一些新鮮的想法。
任何幫助將不勝感激。
代碼示例:
Apr 2 11:53:15 server01 postfix/bounce[9177]: 62A347FB99: sender non-delivery notification: 6F4B67FB97
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 5E9B07FB95: removed
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 62A347FB99: removed
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 6F5837FB98: from=<>, size=4054, nrcpt=1 (queue active)
Apr 2 11:53:15 server01 postfix/bounce[9182]: 652D67FB9D: sender non-delivery notification: 6F5837FB98
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 652D67FB9D: removed
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 6EE717FB92: from=<>, size=4926, nrcpt=1 (queue active)
Apr 2 11:53:15 server01 postfix/qmgr[8140]: 6F4B67FB97: from=<>, size=3448, nrcpt=1 (queue active)
Apr 2 11:53:15 server01 postfix/smtpd[9163]: disconnect from unknown[10.0.0.4]
再舉一個例子:
Aug 30 09:00:56 server01 postfix/qmgr[2321]: 1654A7FB86: removed
Aug 30 09:01:57 server01 postfix/smtpd[4320]: connect from unknown[10.0.0.0]
Aug 30 09:01:57 server01 postfix/smtpd[4320]: disconnect from unknown[10.0.0.0]
Aug 30 09:02:16 server01 postfix/smtpd[4320]: connect from unknown[10.0.0.0]
Aug 30 09:02:16 server01 postfix/smtpd[4320]: 21F077FB86: client=unknown[10.0.0.0]
這很簡單:
NOW=`date +%s`; THEN=`expr $NOW - 3600`; until (("$THEN" > "$NOW")); do DATE=`date -d @\$THEN +'%b %e %k:%M:%S'`; grep -e "^$DATE" /var/log/maillog && sed -n -e "/^$DATE/,\$p" /var/log/maillog && break; THEN=`expr $THEN + 1`; done
換一種說法:
1)獲取當前時間$ NOW
2)1小時前獲得時間$ THEN
3)如果有以$ THEN開頭的行,則打印該行及其后的所有內容(並中斷循環)
4)將$ THEN增加一秒鍾,然后重復直到$ NOW(或者直到找到東西)
它不是很有效,也不是很快,但是可能會為您提供很好的服務。
基本軌道是讀取每一行,並將其時間戳解析為datetime.datetime
對象。 有幾種方法可以這樣做,例如,使用其.fromtimestamp
(靜態)方法。 或更一般的解析器(請參閱utile)
然后使用datetime.datetime.now()
減去datetime.timedelta(mins=60)
; 可以將結果與已解析的時間戳進行比較。
就這么簡單! 無需做任何手冊,工作。
PS下次添加日志文件/行的示例。 我們可以給出具體的示例代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.