如何在Bash历史记录中存储日期,时间和用户的IP

时间:2017-11-04 03:40:30

标签: bash shell history

我需要重新设置history命令,以显示用户登录到我们服务器并执行特定命令的日期,时间和IP地址。有没有办法用history命令显示这些信息?

样本输出将是:

Sat 04 Nov 2017 06:20:20 AM +03 111.111.111.111 : pwd Sat 04 Nov 2017 06:20:20 AM +03 111.123.123.111 : mkdir test Sat 04 Nov 2017 06:20:20 AM +03 123.123.44.32 : pwd

帮助我通过.bash_profile或.bashrc

设置这些更改

1 个答案:

答案 0 :(得分:1)

虽然您可以通过设置HISTTIMEFORMAT来打开Bash历史记录中的时间戳,但不能将字符串作为历史文件的每一行的前缀。您可以通过维护自己的历史文件来使用DEBUG陷阱来实现目标:

save_history() {
  # make sure IP is set in .bash_profile instead of capturing it each time here
  printf '%s : %s : %s\n' "$(date)" "$IP" "$BASH_COMMAND" >> /path/to/history_file
}

trap save_history DEBUG

这样,save_history函数在每个命令之前被调用,并将历史记录记录在文件中。

另见: