Группировка сбоев vsftpd с помощью logwatch

Я пытаюсь сжать записи системного журнала из 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)

Как я могу это сделать?

3 ответа

Какую версию и дистрибутив 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";
   }
}

Ранее в скрипте он суммировал ошибки для каждого пользователя.

Обновление logwatch. Более новые сценарии logwatch автоматически делают это.

Uniq сделает это за вас: я не думаю, что вы можете контролировать формат, но вы можете легко исправить это с помощью awk.

# echo -e "two \ ntwo \ none \ ntwo \ ntwo" | uniq -c
      2 два
      1 один
      2 два

Я предполагаю, что вас не волнуют метки времени, которых нет в ваших примерах.

Другие вопросы по тегам