基本上我想做一个几乎像键盘记录器的程序。问题是,作为网络管理员,有时我不记得我在某些情况下对机器做了什么,或者同时我为 linux 制作了 howto 和教程。我想记录我做了什么。 所以基本上这个程序的想法是: 你输入程序的名称,(我暂时称它为 rat)
$ rat
Welcome everything from now on will be recorded
recording $ ls
file1 file2 file3
recording $ quit
Bye bye
您所做的一切都会输出到一个 xml 文件中。像这样
<?xml version='1.0' encoding='UTF-8' ?>
<rat>
<command>
<input>ls</input>
<output>file1 file2 file3</output>
<err><err>
</command>
</rat>
我正在用 fp_in = popen( input, "w");
做一些测试 和 system
,但首先使用 popen 我无法更改目录,使用“系统我无法正确管理输入和输出。
我也在检查是否可以像插件一样对 bash 做些什么,但没有找到任何信息。
在某些时候,如果感觉合适,我应该创建另一个 shell(这远远超出了我目前的能力)或 fork bash sh。但这应该是那么复杂吧。 我愿意接受从哪里开始的建议。 我对 C 生疏了,所以我又读了很多基础的东西。
有了 xml 文件,后来我在考虑制作一个程序来存储这些数据和/或编辑这些数据,以便我可以创建教程和操作方法。
我可以想出很多方法将其扩展到使用 printscreen,这样所有存储的图像都会转到一个文件,您可以将其上传到服务器(目前我很高兴存储数据)。它可能是一个有用的工具。
附言。我知道这也可以用于邪恶的事情。
请您参考如下方法:
已经存在 script
命令,它将所有输入和输出记录到终端中,并将其写入脚本。我建议只使用它,除非您有它不满足的特殊需求。实际上,我见过的最好的 script
版本是 NetBSD version ,所以如果 Linux 版本不能满足您的需求,您可能需要调查一下。
如果您想自己编写,而不是使用 system
,我建议您使用 fork
/exec
创建一个 shell 进程,将所有输入和输出复制到该进程中。要了解其工作原理,我建议查看 an existing version of script
的源代码.