Hi All!
Подкиньте плз идей как ускорить выполнение этого:
#!/bin/bash
cd /var/log/exim
while read L; do
# вот тут проблема, как это посчитать с sed/awk/... без использования while/for
auth=$( echo "$L" | grep -oE "\ A=auth_[a-zA-Z0-9@:_.-]+" )
foru=( $( echo "$L" | grep -oE "\ for\ .*" | sed "s/\ for\ //") )
# пример echo
if [ ${#foru[@]} -gt 10 ]; then
echo -e "$auth \t ${#foru[@]}"
fi
# в результате
# auth_type:email \t к-во получателей
# спамеры сразу выделятся в таких рассылках
done < <( grep -E "\ A=auth_[a-zA-Z0-9@:_.-]+" main.log )
на log файлах 300+ Мбайт уже проблемы, ждать по 15 сек не вариант, а надо на 1-2 Гб быть готовым.
Задача скрипта считать количество отправленных писем пользователей, которые прошли авторизацию, и при этом учитывать возможность подстановки большого количества получателей в копию/темную копию(на серверах, где это можно, установлен recipients_max, но на некоторых нельзя). Это проблемная часть из-за времени работы. В итоге, просуммируются вот как-то так - http://prntscr.com/e7qk01. На графике php-mail по пользователям, и общая статистика exim-а, non-smtp тоже раздельно по юзерам, рисуется отдельно. Или будет новый граф. Суть - заметить аномальные пики спамеров.