当 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'