history命令内容格式优化:添加日期时间及IP地址
Centos 和ubuntu 测试都可以用
注意:这个配置修改,只对配置生效后的操作命令记录操作时间和IP, 在此之前操作的命令是无法显示当时的时间和IP的。
Linux原生的history命令默认显示内容太少,只显示命令行的简短列表,不包括时间戳或其他详细信息。但是,可以通过修改shell配置文件显示详细的信息。
如果希望看到所有用户详细的历史记录,就需要在全局的 /etc/profile 或 /etc/bash.bashrc 文件中进进行类似的更改。如下。
vim /etc/profile
末尾添加以下内容
#add
###### history property ######
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T] [`whoami`] [${USER_IP}]"
export HISTSIZE=10000
export HISTFILESIZE=10000
#export HISTIGNORE='ls*:ll'
export PROMPT_COMMAND='if [ "$(history 1)" != "$(tail -n 1 /var/log/my_history_command 2>/dev/null)" ]; then history 1 >> /var/log/my_history_command; fi'
HISTTIMEFORMAT 定义了时间戳的格式。"%F %T " 会显示完整的日期和时间(例如 2023-09-17 10:30:00)
HISTSIZE 定义了保存在内存中的历史命令的数量
HISTFILESIZE 定义了保存在历史文件中的命令数量
HISTIGNORE 定义哪些命令不应被保存在命令历史文件中,建议不用忽略
PROMPT_COMMAND 确保输入命令时,都会将历史记录写入文件并重新读取,始终看到最新的历史记录
让环境变量生效
source /etc/profile
创建日志文件并赋予所有用户读写权限
touch /var/log/my_history_command
chmod 666 /var/log/my_history_command
这里将命令单独记录在/var/log/my_history_command文件中。原因是history命令只能看到本用户下输入的命令,所以其实who am i没什么用,ip显示的也是当前用户登录的ip,如果换个ip登录,history命令显示的ip也会变,所以单纯使用history显示IP是不准确的。因此需要将历史记录输出到文本中,这种方式改完后,/var/log/my_history_command文件中才是真正意义上的所有用户命令历史,并且显示正确的时间、用户和IP地址。
注意:这个配置修改,只对配置生效后的操作命令记录操作时间和IP, 在此之前操作的命令是无法显示当时的时间和IP的。