![如何跟踪在终端中执行的命令(没有 bash_history )](https://linux22.com/image/66352/%E5%A6%82%E4%BD%95%E8%B7%9F%E8%B8%AA%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E6%89%A7%E8%A1%8C%E7%9A%84%E5%91%BD%E4%BB%A4%EF%BC%88%E6%B2%A1%E6%9C%89%20bash_history%20%EF%BC%89.png)
我正在编写一个跟踪用户活动的程序,并且基本上尝试将可能的事情自动化。
我目前正在尝试从命令行监视用户经常使用的程序。但仅仅知道还不够,我需要诸如执行此类命令的时间、工作目录等数据。
我当前的解决方案是一组 python 脚本,在启动时,遍历 PATH 并为 PATH 中找到的每个程序创建一个虚拟 python 脚本。当用户尝试使用这些命令时,将调用这些脚本(通过在 PATH 中添加脚本路径)每个脚本将其名称和参数传递给另一个记录信息的脚本,然后调用最初键入的内容终端(通过更改路径)。这是一个相当混乱的解决方案。我确信有一些直接的方法可以做到这一点。
另外,如果我能够获取实时(或几乎实时)执行的命令的数据,那就太好了。
答案1
你看过auditd吗?如果没有,请看这张有关 Linux 审计系统的幻灯片。它确实以更加标准和万无一失的方式提供了您所描述的大部分设施。