最近由于机房安全规范的要求,需要第三方软件进行系统安全审计,linux操作系统默认有登陆、定时任务等审计,要查看其日志的时候发现时间格式为unix时间戳格式,阅读起来很不方便,便想将其中的时间戳转换成为普通时间进行查看
网上普遍的做法为使用perl脚本在阅读时进行转换
cat time.pl
s/(1\d{9})/localtime($1)/e
然后使用管道命令进行转换
less,more,tail -f
less /var/log/audit/audit.log | perl -p time.pl more /var/log/audit/audit.log | perl -p time.pl tail -f /var/log/audit/audit.log | perl -p time.pl
使用这些命令来查看起来不太方便,不像vim查看的全面
于是就写了一个脚本将audit.log中的时间戳转换成普通时间写到新的文件中,以下为脚本代码
#!/bin/bash FILE=/var/log/audit/audit.log cat $FILE |while read LINE do Udate=`echo $LINE|awk -F'[(.]+' '{print $2}'` #Udate=`echo $LINE|awk -F. '{print $1}' | awk -F'(' '{print $2}'` Cdate=`date -d @$Udate` echo $LINE|sed "s/[0-9]\{10\}/$Cdate/" >> read.audit.log done
不过代码的执行效率有点低,在1核1G的虚拟机跑2W条记录大约需要2MIN