ちょっと前にも書いたが、scriptコマンドとawkを組み合わせることで、ターミナルログをタイムスタンプ付きで記録することができる。
script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>> PATH)
[root@BS-PUB-CENT7-02 ~]# cat session.log
2017-02-02 11:06:26 スクリプトは 2017年02月02日 11時06分26秒
2017-02-02 11:06:26 に開始しました[root@BS-PUB-CENT7-02 ~]#
2017-02-02 11:06:27 [root@BS-PUB-CENT7-02 ~]#
2017-02-02 11:06:27 [root@BS-PUB-CENT7-02 ~]# ls -al
2017-02-02 11:06:27 合計 56
2017-02-02 11:06:27 dr-xr-x---. 6 root root 4096 2月 2 11:06 .
2017-02-02 11:06:27 dr-xr-xr-x. 17 root root 4096 1月 29 23:47 ..
2017-02-02 11:06:27 -rw-------. 1 root root 4115 2月 2 11:00 .bash_history
2017-02-02 11:06:27 -rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
2017-02-02 11:06:27 -rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
2017-02-02 11:06:27 -rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
2017-02-02 11:06:27 drwxr-xr-x. 6 root root 89 1月 30 22:59 .cpan
2017-02-02 11:06:27 -rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
2017-02-02 11:06:27 drwxr-xr-x. 3 root root 18 1月 31 23:28 .gem
2017-02-02 11:06:27 drwxr-----. 3 root root 18 1月 30 22:58 .pki
2017-02-02 11:06:27 -rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
2017-02-02 11:06:27 -rw-------. 1 root root 4492 2月 1 08:05 .viminfo
2017-02-02 11:06:27 -rw-------. 1 root root 986 1月 2 2016 anaconda-ks.cfg
2017-02-02 11:06:27 drwxr-xr-x. 10 root root 4096 1月 30 22:58 dategrep
2017-02-02 11:06:27 -rw-r--r--. 1 root root 334 2月 2 11:06 session.log
2017-02-02 11:06:28 [root@BS-PUB-CENT7-02 ~]#
2017-02-02 11:06:29 [root@BS-PUB-CENT7-02 ~]# exit
2017-02-02 11:06:29 exit
で、この時、scriptコマンドでは特定のコマンドを直接実行できるので、ここでsshコマンドを実行してやることで、ssh接続時のターミナルログをタイムスタンプ付きで記録することができる。
# Linux
script -fq -c "ssh user@hostname" >(awk '{print strftime("%F %T ") $0}{fflush() }'>> PATH)
# Mac OS X
script -Fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>> PATH) "ssh user@hostname"
sshの接続が切れたら、自動的にロギングも停止する。 踏み台側に設定しておくことで、クライアント側での操作を記録する事もできるだろう。 …まぁ、前に作ったlsshの中でやってるのと同じなので、そんな目新しいものでも無かったけど、とりあえず残しておく。