以正确的时间延迟重播bash会话

时间:2012-07-06 22:29:24

标签: linux bash

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

问题是:

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

例如,如果我运行一个名为xxx的程序,然后在11.4s之后用Ctrl + C打破它,然后在我退出yyy后运行一个名为xxx 3.4s的程序,我希望重播能够做同样的事情(在11.4s之后用Ctrl + C中断xxx,等待3.4s然后再运行yyy)。

我不需要记录鼠标移动,因为我对录制感兴趣的所有内容都发生在单个bash会话中。

我已将实用程序视为

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

2 个答案:

答案 0 :(得分:2)

script -t是标准答案。

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

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

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

答案 1 :(得分:1)

如何用你选择的语言编写一个bash包装器,它可以记录你需要的信息,同时提供对普通bash环境的访问并将系统设置指向你的包装器而不是原始的bash?当您的包装器记录您需要的信息之间时,IO将在客户端服务/用户和真正的bash之间进行管道传输。一旦记录了信息,重放部分就很简单了。如果您对此方法感兴趣,我可以根据要求提供示例。