【问题标题】:How to store date, time, and the user's IP in Bash history如何在 Bash 历史记录中存储日期、时间和用户的 IP
【发布时间】:2018-04-16 20:32:56
【问题描述】:

我需要重新设置历史命令以显示用户登录到我们服务器并执行特定命令的日期、时间和 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 设置这些更改

【问题讨论】:

  • 在 CentOS 服务器上(忘了说)
  • 请展示你的努力。你可以看这篇文章开始:stackoverflow.com/questions/11987761/…
  • 感谢您的回复,我已经在 .bash_profile 上输入了此条目,它正确显示了日期、时间。但无法获取执行这些命令的用户的 IP 地址。在 .bash_profile 中输入以下代码 export HISTTIMEFORMAT="%c :" 输出为:2017 年 11 月 4 日星期六 06:24:35 AM +03:历史我需要输出为:
  • 2017 年 11 月 4 日星期六 06:20:20 AM +03 123.123.44.32:密码

标签: bash shell history


【解决方案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 函数会在每个命令之前被调用,并将历史记录在文件中。


另见:

【讨论】:

  • 嗨@codeforester 感谢您的回答,但我不太了解。请提供完成此输出的确切步骤,以使用历史命令找出 IP、日期。再次感谢。 :)
  • 使用ssgrep 的组合来提取IP。并了解 SO 不是免费的代码编写服务。你需要付出努力。
猜你喜欢
  • 1970-01-01
  • 2017-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
相关资源
最近更新 更多