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