2017-11-04 116 views
-3

我需要重新设置历史命令以显示日期,时间和用户的IP地址,从他们登录到我们的服务器并执行特定命令。有什么方法可以用历史命令显示这些信息吗?如何在Bash历史中存储日期,时间和用户的IP地址

示例输出将是:

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中

+0

在一个CentOS服务器(忘记提及) –

+1

请出示你的努力。你可以看到这个帖子开始:https://stackoverflow.com/questions/11987761/how-to-find-date-wise-history-of-linux-commands-being-fired – codeforester

+0

感谢您的回复,我已经在.bash_profile上输入此条目,并正确显示日期和时间。但无法取出执行这些命令的用户的IP地址。 在.bash_profile中 出口HISTTIMEFORMAT = “%C:” 下方输入代码 输出是: 星期六2017年11月4日上午06时24分35秒+03:历史 我需要输出: –

回答

0

虽然你可以通过设置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函数获取每个命令之前调用,它记录的命令历史记录在一个文件中。


参见:

+0

您好@codeforester 感谢您的回答,但我不太明白。 请提供确切的步骤来完成这个输出来找出IP,使用历史命令的日期。 再次感谢。 :) –

+0

使用'ss'和'grep'的组合来提取IP。并明白,SO不是免费的代码写作服务。你需要付出努力。 – codeforester

相关问题