帮助中心

这里有最新的使用文档和教程

< 返回

history命令内容格式优化,显示IP,操作时间

2024-07-08 11:25 作者:31IDC 阅读量:78 所属分类:Linux系统

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的。 

 

31IDC - 12 年深耕海外 IDC 高端资源