5

编辑(这似乎很重要,这在上面,详细信息见下文):我需要脚本来实际执行命令,而不仅仅是显示记录的内容!据我所知,脚本实用程序不会这样做。所以像自动热键这样的东西,只适用于 bash 和 linux,记录了时间信息。

问题是:

我想记录和重播一个 bash 会话,按键之间有确切的时间延迟等等。

例如,如果我运行一个名为的程序xxx,然后在 11.4s 后用 Ctrl+C 中断它,然后yyy在我 exited 后运行一个名为 3.4s的程序xxx,我希望重播也这样做(xxx在 11.4s 后用 Ctrl+C 中断,等待 3.4 秒,然后运行yyy)。

我不需要记录鼠标移动,因为我感兴趣的记录都发生在一个 bash 会话中。

我已经研究了实用程序

  • 脚本(它记录 bash 会话命令,但没有时间延迟信息。)
  • xmacro(它记录所有按键但又没有时间信息。)
  • 搜索类似内容的人可能也想查找内容(我包含此链接是因为可能对其他用户有价值;我个人认为提到的任何解决方案对我想要实现的目标都没有用。)
4

2 回答 2

2

script -t 是标准答案。

我还用 Python 重写了脚本,你可以在这里找到:http: //stromberg.dnsalias.org/~strombrg/pypty/

两者都支持-t。我写 pypty 的主要原因是我希望能够每天获取一个文件来记录长时间的 ssh 会话,以供将来参考。

pypty tarball 包含一个 script-replay 脚本(注意名称与 scriptreplay 略有不同),可以使用 gtk 或 curses 在 tty 日志文件中前进和后退。它的倒退方式有点小技巧(因为 vt100 并不是那么简单),但我发现它在很多场合都非常有用。

于 2012-07-06T23:14:27.673 回答
1

用您选择的语言编写一个 bash 包装器怎么样?它可以记录您需要的信息,同时提供对正常 bash 环境的访问并将系统设置指向您的包装器而不是原始 bash?IO 将在客户端服务/用户和真正的 bash 之间通过管道传输,而您的包装器位于记录您需要的信息之间。一旦记录了信息,重播部分就变得微不足道了。如果您对这种方法感兴趣,我可以根据要求提供示例。

于 2012-07-06T22:40:35.847 回答