Я пытаюсь сжать записи системного журнала из vsftpd с помощью logwatch, чтобы получить:
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator
... many many times
к
vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user Administrator : 125 time(s)
Как я могу это сделать?
Обновите logwatch. Новые скрипты logwatch делают это автоматически.
Какую версию и дистрибутив Linux / Unix вы используете и какая версия - logwatch? Я запускаю Redhat 4 - logwatch 5.2.2, и в моем сценарии vsftp (/etc/log.d/scripts/services/vsftp) есть следующее:
if (keys %FailedLogins) {
print "\nFailed FTP Logins:\n";
foreach $ThisOne (keys %FailedLogins) {
print $ThisOne . $FailedLogins{$ThisOne} . " Time(s)\n";
}
}
Ранее в скрипте суммируются сбои для каждого пользователя.
uniq сделает это за вас: я не думаю, что вы можете контролировать формат, но вы можете легко исправить это с помощью awk.
# echo -e "two\ntwo\none\ntwo\ntwo" | uniq -c 2 two 1 one 2 two
Я предполагаю, что вас не волнуют временные метки, которых у вас нет в ваших примерах.