终端中的日志文件可视化工具 (UNIX)(终端日志重放)

gas*_*ter 7 logs terminal ncurses

我需要通过 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
Run Code Online (Sandbox Code Playgroud)

这很好用!

现在,问题是:如何重放这些终端日志?这是执行此操作的默认方法:

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"
Run Code Online (Sandbox Code Playgroud)

好的。有用。但这还不够..:您只能开始播放录音。但是,如果您只需要从给定时间开始记录,或者您需要知道执行命令的确切时间(您可以在“脚本”生成的终端日志文件+计时文件中看到这一点),该怎么办?或者更好:出于教育目的,您需要终端日志记录(因此您需要停止重放录音以记录一些内容等)。

对于这些重放问题,我还没有找到好的程序。所以我虽然我应该为此编写自己的程序(但我只有 bash 脚本经验)。

我认为最好的方法是使用 ncurses(重放解决方案需要在几个不同的操作系统上使用,例如:OpenBSD、Ubuntu、Redhat)。- 终端日志记录可以是一个“审计工具”,用于跟踪用户通过 SSH 所做的事情。

所以我在考虑这个(这是一个终端窗口,例如:gnome-terminal):

用户界面模型:脚本底部的搜索、重放按钮、滚动条和时间戳

:unix.stackexchange 是怎么想的?这个重放解决方案可以用ncurses完成吗(或者对于非程序员来说是否有更好的->更便携/更容易?)?你能提供一些提示/网址如何做到这一点吗?(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] 
Run Code Online (Sandbox Code Playgroud)

更新:我在这个问题上设置了赏金。:)(或者有没有更好的日志记录解决方案可以很好地重播?- ty!)

h0t*_*1r3 3

AFAIK,没有任何工具可以同样出色地完成日志记录和可视化。

rootsh类似的工具非常适合传统日志记录。由于您的问题认为可视化很重要,而您只是简单地记录自己 - 这就是我的回答的重点。

TTYRec是一个终端屏幕录制系统。它只是充当您和应用程序或 shell 之间的伪终端。

下面的所有内容都支持ttyrec格式,因此理论上您应该能够混合搭配以适应。

终端录音

  • ttyrec是一个已经存在很长时间的屏幕记录器(即记录器)。它可以在登录时轻松实例化,以模仿您script.bashrc.
  • shelr是一个相对年轻的项目,提供记录、重播和分享。它是用红宝石写的。网络播放器模仿传统的网络视频播放器(暂停、向前/向后搜索)。 https://github.com/shelr
  • termrec,用 C 编写,ttyrec 替代品。包括一些有趣的工具(proxyrec),并自动压缩录音。非 80x24 终端尺寸的问题。
  • 用 python 编写的ascii.io记录器。一个 shelr 类型的网站和服务,全部开源。

其他玩家

其他软件(格式不兼容)

  • termdebug在 ttyrec 上进行了扩展,也支持记录输入