使用 logwatch 对 vsftpd 故障进行分组

使用 logwatch 对 vsftpd 故障进行分组

我正在尝试使用 logwatch 压缩来自 vsftpd 的 syslog 条目,以获取:

 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)

我怎样才能做到这一点?

答案1

您使用的 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";
   }
}

脚本中先前提到它会汇总每个用户的失败次数。

答案2

升级 logwatch。较新的 logwatch 脚本会自动执行此操作。

答案3

uniq 会为您完成此操作:我认为您无法控制格式,但您可以使用 awk 轻松解决这个问题。

# echo -e "two\ntwo\none\ntwo\ntwo" | uniq -c
      2 二
      1个
      2 二

我假设您不关心时间戳,因为您的示例中没有时间戳。

相关内容