【发布时间】:2011-05-10 15:12:14
【问题描述】:
情况是这样,我编写了一个小脚本来生成拒绝电子邮件的 IP 地址列表:
msgid_array=($(grep ' sendmail\[' /var/log/maillog |
egrep -v 'stat=(Sent|queued|Please try again later)' |
egrep dsn='5\.[0-9]\.[0-9]' | awk '{print $6}'))
for z in ${msgid_array[@]}; do
ip_array[x++]=$(grep $z /var/log/maillog | egrep -m 1 -o 'relay=.*' |
egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}')
done
所以它的作用是查找被拒绝电子邮件的所有消息 ID 并将它们存储在 msgid_array 中。
然后使用 for 循环 grep 带有每个消息 ID 的邮件日志并过滤出发件人 IP 地址并将所有 IP 存储在 ip_array 中。
现在我打算每天运行它,让它解析昨天的日志条目,然后将结果存储在单独的 txt 文件中。
如果我的 txt 文件中有 "rejected_ip_addresses=" 条目,我怎么能简单地将任何新 IP 地址添加到现有列表中?
所以今天我运行它,条目如下所示:
rejected_ip_adresses=1.1.1.1 2.2.2.2
明天当我运行它时,数组看起来像这样,因为相同的 2 个发件人在发送电子邮件时遇到了问题,但有 2 个新发件人:
ip_array=(1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4)
所以我在 txt 中的条目现在应该是这样的,重点是每月对所有有问题的地址进行概览:
rejected_ip_adresses=1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4
感谢您的任何想法,目前我的大脑拒绝帮助我。
【问题讨论】:
标签: arrays bash append text-files