Linuxのscriptコマンドで覚えておくと便利な使い方4個

よくターミナルでの作業ログなどを記録する際に用いられるscriptコマンドだが、オプション自体はあまり多くは無いのだがうまいこと使えれば色々な使い方ができる。 個人的にはよく利用されていると思っていたのだが、あまり周りで使ってる人がいないようなので、とりあえず個人的に知っている使い方についてまとめてみることにした。

1. 基本的な使い方

オプション無しで実行することにより、カレントディレクトリに「typescript」というファイルを作成して作業終了後に操作ログを出力してくれる。

script

指定したファイルに記録する場合は、以下のように引数として出力先のPATHを指定し...


ちょっと前にscriptコマンドで取得したターミナルログにタイムスタンプを付与する方法について記述したが、今回はその状態でさらにscriptreplayを行えるようにしてみる。 ここで厄介なのが、scriptreplayで用いるタイミングが記録されたファイルの書き方が、そのタイムスタンプ+表示されていた文字数になっている事。 行数とかとくに気にされてないので、各行にタイムスタンプが差し込まれている現状だとその文字数が一体何行になるのかを知る必要がある。

1. ログ再生時にタイムスタンプを除外する場合

こっちは簡単。単純にcutコマンドを使ってファイルからタイムスタンプの部分...


ちょっと前にも書いたが、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:0...

前にscriptコマンドで取得するターミナルログにタイムスタンプを付与するというスクリプトを書いたことがあるのだが、また必要になって調べてみたところ、そもそもこれワンライナーで書けるなと気づいたので書き直しをした。

具体的には、以下のように記述する。

script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>> PATH)

これで、scriptコマンドの一時ファイルも存在させずにタイムスタンプが付与されたターミナルログができあがる。 実際に記録したログは以下。


ターミナルのログを記録する方法といえばscriptコマンドだが、タイムスタンプを付与できなかったりSyslogに記録できなかったり、いろいろとかゆいところに手が届かないことが多い。 タイムスタンプやらは無理やり設定できなくもないけど、あまりいい方法とも言えず、何かいい方法とかツールがないかと調べていたところ、『tlog(GitHubはこちら)』というターミナルのI/OログをSyslog形式で記録するツールを見つけた。

ターミナルの内容はJSONで記録されるため、ファイルを直接見ることで内容を確認することもできるし、GraylogなどのSyslogサーバ側に転送してやることもでき...


2017/04/07 追記

こちらでワンライナーでのやり方を記述したので、こっちの方がわかりやすい+使いやすいかも。


LinuxやUNIXにおいて、ターミナルコンソールでの操作内容を残すのに都合の良いscriptコマンドだが、残念ながらそのコマンドがいつ実行されたのかは記録されない。
scriptコマンドで記録したログにタイムスタンプを付与するにはscriptコマンド単体ではなく、記録しているログにタイムスタンプを追記して出力させる必要がある。以前記述した、scriptコマンドの内容をsyslogで管理させる方法と同じような手法を取る必要がある。

...

以前、sshサーバ側で自動的に操作ログを取得する方法について記述したが、今回は操作ログを自動取得し、かつその内容をSyslogとして記録させるように設定してみる。
Syslogへの記録については、loggerコマンドを利用する。

今回は、踏み台サーバとして利用する事を想定し、ユーザ「test」での設定例を記述する。
やり方は簡単。対象ユーザの「.bash_profile」に、以下の内容を追記するだけだ。

P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
if [ "$P_PROC" = sshd: ];...

Linuxサーバで、sshログインされた際の操作ログを残したい、という希望は当然あるもの。
という訳で、今回はsshで操作された内容を、ログとして記録する設定について記述する。

設定は簡単。各ユーザの.bash_profileに、以下の内容を追記するだけだ。

# Operation Log.
P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
if [ "$P_PROC" = sshd: ]; then
    script -fq /取得するログのPATH
exit
fi

行っている内容は単純で、プロセス...


Linuxには、scriptコマンドというシェル上で操作した内容を記録するコマンドが存在している。

これに関連するコマンドで、「scriptreplay」というコマンドが存在している。
「scriptreplay」は、「script」コマンドで記録されたログをもとに、実際にターミナル上で操作を行った状態を再生してくれるコマンドだ。

「scriptreplay」で操作を再生させるには、「script」コマンドで「-t」オプションを用いて、ターミナル上での入力時間データを記録させる必要がある。

まずは、以下のコマンドでターミナル上の操作結果を記録する「test.session」と...