Вот ситуация, я написал небольшой скрипт для генерации списка 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
Итак, он ищет все идентификаторы сообщений отклоненных писем и сохраняет их в msgid_array.
Затем, используя цикл for, grep создает почтовый журнал с каждым идентификатором сообщения, отфильтровывает IP-адрес отправителя и сохраняет все IP-адреса в ip_array.
Теперь я намереваюсь запускать это каждый день и позволить ему анализировать записи журнала за вчерашний день, а затем сохранять результаты в отдельном текстовом файле.
Если у меня есть запись "rejected_ip_addresses =" в моем текстовом файле, как я могу просто добавить новые IP-адреса в существующий список?
Итак, сегодня я запускаю его, и запись выглядит так:
rejected_ip_adresses=1.1.1.1 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
Спасибо за любые идеи, в настоящее время мой мозг отказывается помочь мне.