ターミナル(UNIX)のログファイル可視化ツール(ターミナルロギング再生)

ターミナル(UNIX)のログファイル可視化ツール(ターミナルロギング再生)

SSHを介してさまざまなサーバーにログインする必要があり、端末にログインするのがうまく機能します(正確で正確な日付/時刻を持つsmittyメニュー/AIXの項目も含まれます)。すでに解決策があります。

0)
# with root:
apt-get install bsdutils

# with the given user:
mkdir ~/logs

1)
# append this to you're "~/.bashrc" - this must be the last line!!
STARTTIME=`date +%F-%Hh-%Mm-%Ss-%N`; script -q -t 2> /home/USERNAMEHERE/logs/$STARTTIME-timing.txt -c 'bash --rcfile /home/USERNAMEHERE/.bashrc-cp' -f /home/USERNAMEHERE/logs/$STARTTIME-log.txt; exit 0

2)
# make sure the 1) is the last line of bashrc, then [this is needed to avoid "fork bomb"..]:
sed -e '$d' /home/USERNAMEHERE/.bashrc > /home/USERNAMEHERE/.bashrc-cp

本当に良いです!

今問題は、これらの端末ログ記録をどのように再生するかということです。これを行う基本的な方法は次のとおりです。

REPLAY:
# rename the filenames to you're needs! - you can only play 1 file at one time..
scriptreplay "/home/USERNAMEHERE/logs/$STARTTIME-timing.txt" "/home/USERNAMEHERE/logs/$STARTTIME-log.txt"

良い効果があります。しかし、それだけでは十分ではありません…:録音再生のみを開始できます。しかし、特定の時間だけロギングが必要な場合、またはコマンドの正確な実行時間を知る必要がある場合(ターミナルログファイル+「スクリプト」によって生成されたタイミングファイルで確認できます)。あるいは、より良い方法は、トレーニング目的でターミナルロギングが必要なことです(したがって、録音内容を記録するには録音の再生を停止する必要があります)。

私はこれらの再生問題に対する良い解決策を見つけることができませんでした。だから私はこれのために私自身のプログラムを書く必要があると思いました(しかし私はbashスクリプトの経験だけです)。

私の考えでは、これを行うための最良の方法はncursesを使用することです(再生ソリューションはOpenBSD、Ubuntu、Redhatなどの複数のオペレーティングシステムに必要です)。 - ターミナルロギングは、SSHを介してユーザーが実行するタスクを追跡するための「監査ツール」になります。

だから私はこれについて考えています(これは端末ウィンドウです、例:gnome-terminal):

UIモデル:スクリプト下部の検索、再生ボタン、スクロールバー、タイムスタンプ

尋ねる: unix.stackexchange についてどう思いますか?この再生ソリューションを使用できます呪い(それともプログラマーではない人にとってより良い移植性/より簡単なものがありますか?)これを行う方法についていくつかのヒント/ URLを提供できますか? (ncursesはこれを行うことができますか?)

ps:ターミナルログファイルの例(ターミナルを開き、「echo hi」と入力してターミナルを閉じます):

[USER@HOST ~/logs] cat -vte 2012-09-14-12h-46m-27s-509330863-log.txt 
Script started on Fri 14 Sep 2012 12:46:27 PM CEST$
^[[0;32m[USER@HOST ~]^[[m echo hi^M$
hi^M$
^[[0;32m[USER@HOST ~]^[[m [USER@HOST ~/logs] 
[USER@HOST ~/logs] 
[USER@HOST ~/logs] cat -vte 2012-09-14-12h-46m-27s-509330863-timing.txt 
0.512822 29$
0.179438 1$
0.925494 1$
0.254477 1$
0.065499 1$
0.075037 1$
0.139497 1$
0.136499 1$
0.039944 35$
[USER@HOST ~/logs] 

更新:この問題に対して賞金を設定しました。 :) (それともうまく再生できるより良いロギングソリューションはありますか? - ty!)

答え1

AFAIK、どのツールもロギングと可視化を同じようにうまくいきません。

rootsh同様のツールは、既存のロギングに適しています。あなたの質問は、視覚化が重要であると考え、単に自分自身を文書化することであるので、これが私の答えのポイントです。

TTYレコード端末画面録画システムです。それはただ次のように動作します。擬似端末あなたとアプリケーションまたはシェルの間。

以下の項目はすべてフォーマットをサポートしているため、ttyrec理論的には適切に混在して使用できる必要があります。

ターミナル録画

  • ティレク長い間使用されてきたスクリーンレコーダー(例:レコーダー)。scriptでフォークする方法を模倣するために、ログイン時に簡単にインスタンス化できます.bashrc
  • シェル録音、再生、共有を提供する比較的若いプロジェクトです。ルビーで書かれています。 Webプレーヤーは、既存のWebビデオプレーヤー(一時停止、前後検索)を模倣します。 https://github.com/shelr
  • テムレック、Cで書かれており、ttyrecを置き換えます。いくつかの興味深いツール(proxyrec)が含まれており、録音内容を自動的に圧縮します。 80x24以外の端末サイズに関する問題。
  • ascii.ioPythonで書かれたロガー。シェラー型ウェブサイトとサービス、いずれもオープンソースです。

他のプレイヤー

その他のソフトウェア(互換性のない形式)

  • 用語のデバッグロギングをサポートするためにttyrecを拡張する入力する返品。

答え2

もう1つのアプローチは、GNUスクリーンを使用し、各コマンドの前にシェルに出力を書き込む場所をスクリーンに知らせることです。たとえば、zshを使用した場合(スクリーンセッションを開始した後):

preexec() {
  ((cmd++))
  { 
    date +%F-%T
    print -r -- "$3"
  } > ~/logs/$cmd
  screen -X msgminwait 0
  screen -X log off
  screen -X logfile ~/logs/$cmd
  screen -X log on
  screen -X msgminwait 3
}

次に、〜/ logsでコマンドと出力を使用してファイル番号を付けました。

関連情報