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で動作を確認しました。


0件のコメント

コメントを残す

メールアドレスが公開されることはありません。