如何跟踪在终端中执行的命令(没有 bash_history )

如何跟踪在终端中执行的命令(没有 bash_history )

我正在编写一个跟踪用户活动的程序,并且基本上尝试将可能的事情自动化。

我目前正在尝试从命令行监视用户经常使用的程序。但仅仅知道还不够,我需要诸如执行此类命令的时间、工作目录等数据。

我当前的解决方案是一组 python 脚本,在启动时,遍历 PATH 并为 PATH 中找到的每个程序创建一个虚拟 python 脚本。当用户尝试使用这些命令时,将调用这些脚本(通过在 PATH 中添加脚本路径)每个脚本将其名称和参数传递给另一个记录信息的脚本,然后调用最初键入的内容终端(通过更改路径)。这是一个相当混乱的解决方案。我确信有一些直接的方法可以做到这一点。

另外,如果我能够获取实时(或几乎实时)执行的命令的数据,那就太好了。

答案1

你看过auditd吗?如果没有,请看这张有关 Linux 审计系统的幻灯片。它确实以更加标准和万无一失的方式提供了您所描述的大部分设施。

http://people.redhat.com/sgrubb/audit/audit_ids_2011.pdf

相关内容