2019年11月29日金曜日

シェル芸で audit ログに分かり易いタイムスタンプを付加

audit ログというのは、めったには見ないのですが、タイムスタンプが UNIX 時間になっていて不便です。前回の dmesg に続いて、分かり易いタイムスタンプを付加してみました。
[root@hoge ~]# gawk -F\( '{print strftime("%F %T",$2),$0}' /var/log/audit/audit.log
...
2019-11-29 06:26:01 type=SERVICE_STOP msg=audit(1574976361.151:1341): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sysstat-collect comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
2019-11-29 06:27:01 type=SERVICE_START msg=audit(1574976421.151:1342): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sysstat-collect comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
2019-11-29 06:27:01 type=SERVICE_STOP msg=audit(1574976421.151:1343): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sysstat-collect comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
[root@hoge ~]# 
厳密には $2 をピリオド (.) または コロン (:) のところまででカット (1574976421.151:1343 -> 1574976421) してから、strftime に渡すのが「お行儀が良い」ものと思いますが、AWK の仕様を考えれば、そのまま $2 を渡すで良いものと思います。もっと明示的に、0+$2 と記述することもできますが、シェル芸 (gawk芸?) 道的には、そのまんま $2 指定でしょう。
[root@hoge ~]# date ; gawk -F\( '{printf("%d %s\n",0+$2,$0)}' /var/log/audit/audit.log | tail -1
2019年 11月 29日 金曜日 06:40:32 JST
1574977201 type=SERVICE_STOP msg=audit(1574977201.368:1377): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=dnf-makecache comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
[root@hoge ~]# date -d @1574977201
2019年 11月 29日 金曜日 06:40:01 JST

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ