Mik*_*e B 5 linux bash sendmail centos awk
CentOS 5.x | 发邮件
有时,我需要搜索 sendmail 传送日志以找出丢失邮件的原因。这通常涉及两个(或更多)步骤:
第 1 步:在 /var/log/maillog 中搜索用户的电子邮件地址。例如grep -i "someuser@recipientdomain.com" /var/log/maillog
这通常会返回如下内容:
Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<someuser@recipientdomain.com>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable
Run Code Online (Sandbox Code Playgroud)
第 2 步:然后我将获取唯一的消息名称(在本例中为 p937blksdh3)并进行搜索。例如:grep -i p937blksdh3 /var/log/maillog
我想将第 1 步和第 2 步合并为一个单行代码,并让它自动对其他 id 执行相同的搜索。因此,在单个命令中,我想执行以下操作:
小智 7
你可以做类似的事情。
for i in `grep -i "someuser@recipientdomain.com" /var/log/maillog | awk '{print $5}'`; do grep -i $i /var/log/maillog; done
Run Code Online (Sandbox Code Playgroud)
这将为您正在查找的用户搜索出该行,然后选择该行上的第 5 个项目(以空格 iirc 分隔)。然后对于该列表中的每个消息 ID,将 grep 包含消息 ID 的行。
如果您想从消息 ID 的末尾删除 :,您可以执行类似 for i in 的操作grep -i "someuser@recipientdomain.com" /var/log/maillog | awk '{print $5}' | sed 's/\://。做 grep -i $i /var/log/maillog; 完毕
希望有帮助。
| 归档时间: |
|
| 查看次数: |
27946 次 |
| 最近记录: |