我一直在寻找一种方法来记录一些关于命令历史的更详细的信息。我的主要目的是为了在我们的应用程序中调试问题时创建粗略的服务器时间表,发布命令的大致日志。 这不是用于非常详细的审计目的。我遇到了this post,它提出了一个很好的方法来修改PROMPT_COMMAND
以增加有关每个命令的附加信息的history
日志。它建议添加以下到~/.bashrc
文件:非交互式shell命令的历史
export PROMPT_COMMAND='hpwd=$(history 1); hpwd="${hpwd# *[0-9]* }"; if [[ ${hpwd%% *} == "cd" ]]; then cwd=$OLDPWD; else cwd=$PWD; fi; hpwd="${hpwd% ### *} ### $cwd"; history -s "$hpwd"'
这工作真棒,除了发出的PS1
提示时,它才会发生。有没有一种方法可以增强这个功能以使用非交互式shell(我认为这是正确的术语)?
例如,我想:
ssh host "ls | grep home"
要创建ls | grep home
上host
条目为好,但由于这是不是通过PS1
提示链接的解决方案做达不到。
我已经看了一下auditd
。这是一个很好的实用工具,但细节的程度远远超出我的需要。我本可以很容易地解析日志,但是管道,重定向,循环变成了一场噩梦,可以合理地重建成类似于已经报告的东西。
这需要每个人都发出远程命令来使用'喊'虽然,对吧?是否有基于主机的解决方案? – JaredC
你可以在远程主机上用类似的东西包装登录shell。如果你绝望,你可能会破解远程'bash'或'sshd'来做日志记录。 – tripleee
我对bash不太熟悉......是否有一些简单的指导可供参考? – JaredC