ちょっと前にも書いたが、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の中でやってるのと同じなので、そんな目新しいものでも無かったけど、とりあえず残しておく。