audit.logを確認している際にいつ出力されたログだろうっと思っても、タイムスタンプがUnix時間で記録されてて、あぁ (~_~) てなること多いと思います。
一行くらいの確認だと、dateコマンドの@を使って変換してましたが、、、
# date --date=@1396918226.579
2014年 4月 8日 火曜日 09:50:26 JST
タイムスタンプをコピペするのも面倒なので、マルっと変換するようなコマンドをawkのワンライナーを考えてみました。
# awk 'match($0,/[0-9]+/){print strftime("%c",substr($0,RSTART,RLENGTH)),$0}' /var/log/audit/audit.log
2014年04月08日 09時50分26秒 type=USER_LOGIN msg=audit(1396918226.579:2773): user pid=562 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=login acct=28756E6B6E6F776E207573657229 exe="/usr/sbin/sshd" hostname=? addr=10.0.2.15 terminal=ssh res=failed'
awkへ渡しているスクリプトを少し解説しますね。
# awk 'match($0,/[0-9]+/) # Unix時間の文字列を前方一致でマッチさせる \
{print strftime("%c", # Unix時刻をstrftimeで読みやすいフォーマットに変換する \
substr($0,RSTART,RLENGTH)), # substrで正規表現にHitしたUnix時刻を切り出す \
$0} # 変換した日時と変換前のログを合わせて出力する \
' /var/log/audit/audit.log
ちなみに正規表現にマッチしたところを切り出す処理はこちらを参考にさせていただきました。
あと、SELinuxな資料見てたところ、ausearch使えばログが見やすくなるって記載ありましたが、そんな達人なコマンド、頭に入ってませんよー、ってことでご了承お願いします。(^_^;)
ではでは。