scriptコマンドを使うと全てのCUI出力をファイルに保存できる。
いろんなサイトに紹介されている方法によると、/etc/profileの最後にscriptログを採取するためのシェルスクリプトを追加するのが楽みたい。シェルが実行される前に必ず/etc/profileが実行されるので、全ユーザの操作ログが問答無用で取れる。
CUIの出力しかファイルに保存されないので、パスワードなどの入力は保存対象からは除外され、安心。
/etc/profileの末尾に以下を追加。
################## # scriptログ採取 # ################## if [ -n "$SSH_CLIENT" ]; then # ssh経由でログインしている場合 TOPPROCESS_JUDGE_TOKEN='sshd:' else # コンソールからログインしている場合 TOPPROCESS_JUDGE_TOKEN='login' fi # scriptの多重起動を避けるための判定 if [ "$(ps -eo 'pid,args' | grep "$PPID" | grep "$TOPPROCESS_JUDGE_TOKEN" | awk '{print $2}')" = "$TOPPROCESS_JUDGE_TOKEN" ]; then # scriptは未起動 SCRIPTLOGFILE="/tmp/script_$(whoami)_$(date +%Y%m%d%H%M%S).log" touch $SCRIPTLOGFILE chmod 600 $SCRIPTLOGFILE script $SCRIPTLOGFILE exit fi
見ての通りですが、 /tmp に script_[ユーザID]_[年月日時分秒].log が作成されます。
CentOS4.5で動作を確認しました。