ちょっと前にも書いたが、scriptコマンドとawkを組み合わせることで、ターミナルログをタイムスタンプ付きで記録することができる。

bash
script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>> PATH)
shell
[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接続時のターミナルログをタイムスタンプ付きで記録することができる。

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