捕获 Linux shell 命令到文件

捕获 Linux shell 命令到文件

我正在尝试将所有 Linux Shell 命令捕获到某个文件中。我尝试使用auditd服务,但它没有给我想要的输出。

我搜索了一下,发现了一些不错的解决方案

步骤 1:vi /etc/bashrc 并在末尾添加以下行:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

第2步:

通过在 /etc/rsyslog.conf 文件中添加以下行,将 syslogger 设置为将 local6 捕获到日志文件中:

local6.*                /var/log/cmdlog.log

输出是:

1 月 10 日 11:05:20 itdev-server eddiem: root [7310]: vim /etc/rsyslog.conf [0]

这是一个非常好的解决方案,适合我的需要,但我有一些无法解决的问题。

1)如何忽略“Enter”按钮,每次按Enter按钮时都会记录最后一个命令。

2)当您 ssh 到另一台服务器时,它不会记录 ssh 命令,直到您断开会话,但更重要的是,它不会捕获在远程主机上运行的命令。

如果有人有解决方案或解决方法,那就太好了!

提前致谢。

埃迪·M

答案1

script命令可能对您有用。它捕捉到一切在会话中并将其写入文件(typescript默认情况下)。

$ script
Script started, file is typescript
$ date
10 Jan 2016 12:45:59
$ id
uid=1000(roaima) gid=50(staff)...
$ exit
exit
Script done, file is typescript


$ sed 's/^/|   /' typescript    # cat typescript, with "|" on front of each line
|   Script started on 10 Jan 2016 12:45:56
|   $ date
|   10 Jan 2016 12:45:59
|   $ id
|   uid=1000(roaima) gid=50(staff)...
|   $ exit
|   exit
|
|   Script done on 10 Jan 2016 12:46:03

相关内容