Хотите просмотреть журналы exim за последние 24 часа и просуммировать общее количество писем для каждого пользователя, пожалуйста, предложите мне команду (ы)
Я знаю, как просматривать электронные письма, находящиеся в очереди ... но я хочу узнать, какие пользователи отправили наибольшее количество писем за последние 24 часа.
Это может зависеть от того, как настроено ваше ведение журнала, но я думаю, что это будет работать в системе по умолчанию:
grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | sort | uniq -c | sort -nr
В результате получится что-то вроде этого:
151 dovecot_plain:grafana
12 dovecot_plain:jolt
6 dovecot_plain:banana
2 dovecot_login:banana
Я здесь ищу А = который содержит имя пользователя и способ их аутентификации из / var / журнал / exim4 / mainlog, затем я передаю его sort
и uniq -c
, который объединяет их в группу и дает вам номер. Последний sort -nr
просто дает мне счет в упорядоченной группе в обратном порядке (сначала максимальное число).
Если у вас разные типы аутентификации, допустим, dovecot_plain и dovecot_login но с тем же именем пользователя, то самый простой способ избавиться от этого - добавить другой grep, который получит только то, что стоит после ":", например:
grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim4/mainlog | grep -oP ":\K(.*)" | sort | uniq -c | sort -nr
И вывод:
151 grafana
12 jolt
8 banana
Примечание: Я не учел 24-часовой лимит, так как это также зависит от того, как настроено ведение журнала, и это становится более сложным, и я думаю, что это хорошее начало. В противном случае вам нужно как-то отфильтровать временные метки журнала с помощью grep, чтобы отфильтровать даты, а затем передать их в мою строку grep.