2024-03-19
Linux
00

目录

history命令显示时间戳、IP地址、用户名
一、前置知识
二、问题
三、解决思路
四、分步实现思路(想直接抄配置的可以直接去看第五步)
五、将配置更新到/etc/profile中,并使其生效(附完整配置)。

history命令显示时间戳、IP地址、用户名

一、前置知识

history命令的功能是显示和管理用户所执行过的所有命令记录。这些记录默认被Linux系统保存。用户可以使用history命令查阅这些记录,也可以对其记录进行修改和删除操作。

[root@localhost ~]# history 1 yum -y update 2 vi /etc/sysconfig/network-scripts/ifcfg-ens33 3 reboot 4 yum -y install vim wget net-tools 5 history

history命令的常用参数如下:

-a: 保存命令记录 -c: 清空命令记录 -d: 删除指定序号的命令记录 -n: 读取命令记录 -r: 读取命令记录到缓冲区 -s: 添加命令记录到缓冲区 -w: 将缓冲区信息写入到历史文件

二、问题

在日常运维工作中,因为各种需求申请登录到到服务器的情况经常出现,例如开发、运维、第三方技术支持等,在缺乏堡垒机日志审计等专业设备的情况下,无论是在日常背锅排查过程中,或者入侵事件的应急排查过程中,无法知道用户的操作(乱搞图片)情况。

三、解决思路

只要思想不滑坡,办法总比问题多。

  1. 获取用户登录IP

  2. 拿不到IP的情况下,用主机名代替

  3. 格式化history命令

  4. 开启历史命令追加功能,不覆盖之前的历史记录

  5. 每次登录执行保存命令的记录

四、分步实现思路(想直接抄配置的可以直接去看第五步)

  1. 获取当前登录用户的真实IP地址
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
  1. 判断如果获取不到IP,则使用hostname命令获取主机名作为IP的替代值
if [ -z "$USER_IP" ] then USER_IP=`hostname` fi
  1. 设置历史命令时间格式化输出
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
  1. 开启历史记录追加功能
shopt -s histappend
  1. 设置PROMPT_COMMAND环境变量,使得每次shell提示符出现前自动执行history -a命令。

export PROMPT_COMMAND="history -a"

五、将配置更新到/etc/profile中,并使其生效(附完整配置)。

# 获取当前登录用户的真实IP地址 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` # 如果获取不到IP,则使用hostname命令获取主机名作为IP的替代值 if [ -z "$USER_IP" ]; then USER_IP=`hostname` fi #格式化历史命令输出 export HISTTIMEFORMAT="%F %T $USER_IP `whoami` " #开启历史记录追加功能 shopt -s histappend # 设置PROMPT_COMMAND环境变量,使得每次shell提示符出现前自动执行history -a命令,确保所有交互式命令都被保存至历史记录中 export PROMPT_COMMAND="history -a"

将配置更新到/etc/profile文件中,并执行:

source /etc/profile

最后,执行history命令来看看效果

[root@localhost ~]# history 1 2024-03-20 16:30:33 192.168.10.1 root vi /etc/sysconfig/network-scripts/ifcfg-ens33 2 2024-03-20 16:30:33 192.168.10.1 root reboot 3 2024-03-20 16:30:33 192.168.10.1 root ll 4 2024-03-20 16:30:33 192.168.10.1 root ping www.baidu.com 5 2024-03-20 16:30:33 192.168.10.1 root yum -y update 6 2024-03-20 16:30:33 192.168.10.1 root vi /etc/sysconfig/network-scripts/ifcfg-ens33 7 2024-03-20 16:30:33 192.168.10.1 root history 8 2024-03-20 16:30:45 192.168.10.1 root vim /etc/profile 9 2024-03-20 16:31:32 192.168.10.1 root source /etc/profile 10 2024-03-20 16:31:34 192.168.10.1 root history

至此可以看到,执行时间、IP地址、用户名、执行命令就都展现出来了。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:XiaoWang0777

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

本网站由 又拍云Logo 提供CDN加速/云存储服务 萌ICP备20240377号