将 SELinux 日志日期格式从 Epoch 转换为 Normal

将 SELinux 日志日期格式从 Epoch 转换为 Normal

当 SELinux 将事件记录到我的 CentOS 6 系统上的审计日志中时,它会以纪元时间记录,这在尝试排除故障时会造成很大的麻烦。有没有办法让它使用人类可读的日期格式记录这些事件?我查看了配置文件并在 Google 上搜索了一下,但似乎找不到任何东西。

答案1

我认为没有任何配置选项,但是我发现了一个可以在前面添加人类可读时间的脚本:

egrep '^type=(AVC|SELINUX)' /var/log/audit/audit.log |
while read line; do
   time=`echo $line | sed 's/.*audit(\([0-9]*\).*/\1/'`;
   echo `date -d @$time` $line;
done

来源:http://blog.commandlinekungfu.com/2010/08/episode-106-epoch-fail.html

答案2

您可以使用ausearch可以-i选择将结果解释为人类可读的:

# grep -i avc /var/log/audit/audit.log | ausearch -i

Perl 代码:

# tail -f /var/log/audit/audit.log | perl -pe 's/(\d+)/localtime($1)/e'

答案3

您可以使用 sed 和 date 命令来转换日期时间,然后格式化它。

tail -f /var/log/audit/audit.log | sed -re 's/(^.+)([0-9]{10})(.+$)/echo "\1"`date -d @\2 +%Y-%m-%d_%H:%M:%S`"\3"/e'

使用 perl 也是一样:

tail -f /var/log/audit/audit.log | perl -pe 's/(\d{10})/`echo -n \`date -d \@$1 +%Y-%m-%d_%H:%M:%S\``/e'

相关内容