2012-07-06 54 views
5

编辑(因为它似乎很重要,这在最上面,详情见下文): 我需要脚本来实际执行命令,而不仅仅是显示记录的内容!据我所知,脚本实用程序不会这样做。所以像auto hotkey这样的东西,只适用于bash和linux,并记录了时序信息。以正确的时间延迟重播bash会话

的问题是:

我想记录和重放bash命令,与按键等之间的精确时间延迟。

举例来说,如果我运行一个叫xxx再经过11.4s用Ctrl + C打破它,然后运行一个名为yyy 3.4s我退出后xxx程序的程序,我想重播做同样的(破xxx在11.4秒后按Ctrl + C,等待3.4秒,然后运行yyy)。

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

我特地到公用事业

  • 脚本(它记录bash命令的命令,但没有时间延迟的信息。)
  • xmacro(它记录了所有的按键,但再没有时间信息。)
  • 寻找类似的东西的人也可能想看看this以上 (我包括这个链接是因为其他用户可能的价值; 我个人没有找到任何我提到的有用的解决方案 。 )
+1

我注意到'script'的Linux版本有'-t'选项来记录时间。 (至少在我的机器上,BSD版本似乎没有这个)。随着时间的推移,你可以运行[scriptreplay](http://linux.die.net/man/1/scriptreplay)。 – chrisaycock 2012-07-06 22:56:19

+0

为了便于说明,您希望按键之间的时间延迟还是命令之间的时间延迟? – 2012-07-06 22:59:38

回答

1

如何用您选择的语言编写bash包装程序,它可以记录所需的信息,同时提供对正常bash环境的访问并将系统设置指向您的包装而不是原始bash? IO将在客户端服务/用户和真正的bash之间传输,而包装程序则在记录所需信息之间进行。一旦信息被记录,重播部分变得微不足道。如果您对此方法感兴趣,我可以根据要求提供示例。

+0

你能提供这样的例子吗?我可以在Python,C++,c,bash中编写代码,所以对我来说熟悉的东西会很棒。 – matjaz 2012-07-09 12:07:57

+0

当然。我会把东西扔在一起,然后回到这里,并附上链接。如果您在合理的时间内没有看到更新,请通知我。 – 2012-07-12 22:55:24

2

脚本-t是标准答案。

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

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

pypty tarball包含一个脚本重放脚本(注意脚本重放的名称略有不同),可以使用gtk或curses在tty日志文件中前后移动。它的后退手段有点破绽(因为vt100并不那么简单),但我发现它在很多场合都非常有用。

+0

谢谢!因为我觉得我已经通过互联网的一半搜索之前,我发布了这个,我想我应该重新思考我的搜索策略(DFS是不是答案https://xkcd.com/761) 也感谢你的蟒蛇参考。我正在考虑尝试编写这样的程序,如果我找不到我想要的。 – matjaz 2012-07-07 07:44:22

+0

Sory,我没有注意到脚本没有执行这些命令。 – matjaz 2012-07-09 12:07:21