我在本地中使用Postfix。我正在編寫一個腳本來獲取延遲/退回的郵件報告,用於每天。如果我是正確的,通常是日誌在日誌文件中以列的形式打印。獲取Postfix/var/log/maillog中的特定列
我的建議是我希望grep前一天的「to」,「status」,「said」和它的消息例如「說:550 Invalid Recipient」。而事情是相同的日誌打印多次,但我需要grep從所有類似的日誌中的任何一個。
Feb 13 13:40:35 ganga11 postfix/smtp [12098]:3371F2BF52:to =,relay = none,delay = 1.2,delay = 0.84/0.01/0.27/0.07,dsn = 5.1.1,status =反彈(主機說:550 5.1.1收件人未找到http://x.co/irbounce(回覆RCPT TO命令))
Feb 13 13:40:35 ganga11 postfix/smtp [6923]:3371F2BF52:to =,relay = none ,延遲= 1.5,延遲= 0.84/0/0.46/0.19,dsn = 5.0.0,狀態=反彈(主機表示:550沒有這樣的用戶([email protected](回覆RCPT TO命令))
Feb 13 13:40:35 ganga11 postfix/smtp [29489]:3371F2BF52:to =,relay = none,delay = 1.3,delay = 0.84/0.01/0.38/0.1,dsn = 5.0.0,status = bounced(host說:550#5.1.0地址被拒絕回覆RCPT TO命令))
Feb 13 08:14:45 ganga11 postfix/smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,delay = 6139/0.02/0.15/0,dsn = 4.4.1,status = deferred(連接到aaaaaa.co.in連接被拒絕)
Feb 13 13:40:36 ganga11 postfix/smtp [6940]:3371F2BF52:to =,relay = none,delay = 2.3 ,延遲= 0.84/0.01/0.17/1.3,dsn = 5.1.1,狀態=反彈(主機表示:550)5.1.1未找到收件人。 http://x.co/irbounce(回覆RCPT TO命令))
Feb 13 13:40:35 ganga11 postfix/smtp [6923]:3371F2BF52:to =,relay = none,delay = 1.5,delay = 0.84/0/0.46/0.23,dsn = 5.0.0,status = bounced(主機表示:550沒有這樣的用戶([email protected])(回覆RCPT TO命令))
Feb 13 04:14:24 ganga11 postfix/smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,延遲= 6139/0.02/0.15/0,dsn = 4.4.1,status = deferred(連接xyzz.com連接被拒絕)
Feb 13 17:14:11 ganga11 postfix/smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,delay = 6139/0.02/0.15/0,dsn = 4.4.1,status = deferred(連接到bbbbb .com連接被拒絕)
嗨kometen, 我試過用sed,awk和grep,但是我找不到合適的命令。 這是一個似乎有點但取回所有日誌。 awk -F,'{print $ 7 $ 12}'/home/samplelog.txt | awk -F \ f = 14 -vt = 25'{for(i = 14; i <= t; i ++)printf(「%s%s」,$ i,(i == t)?「\ n」: OFS)}'| sort | uniq – Narasimman
我建議你使用grep來獲得你想要的行,並用管道將其剪切以提取帶有-f參數的列並使用空格作爲分隔符。某處像'grep'foo | bar | baz「|剪下-d「」-f 1,2,3'。 http://serverfault.com/是一個更好的地方要問。 – kometen