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

TseKing 09-11 680阅读 0评论

一、前置知识

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

root@localhost:~# history 
    1  mount /dev/sr0 /media/
    2  mount /dev/sr1 /media/
    3  cd /media/
    4  ls
    5  ./install.sh 

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'`
  2. 判断如果获取不到IP,则使用hostname命令获取主机名作为IP的替代值

    if [ -z "$USER_IP" ]
  3. 设置历史命令时间格式化输出

    export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
  4. 开启历史记录追加功能

    shopt -s histappend
  5. 设置PROMPT_COMMAND环境变量,使得每次shell提示符出现前自动执行history -a命令。

    export PROMPT_COMMAND="history -a"

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

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

USER_IP=`who -u am i 2> /dev/null |awk '{print $NF}' | sed -e 's/[()]//g'`
if [ -z "$USER_IP" ]; then
  USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"

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

root@inboc-sys-ubuntu-xj:~# history 
    1  2024-09-11 20:27:53 192.168.50.2 root export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
    2  2024-09-11 20:27:53 192.168.50.2 root curl -fsSL https://get.docker.com/ | sh
    3  2024-09-11 20:27:53 192.168.50.2 root docker compose --version
    4  2024-09-11 20:27:53 192.168.50.2 root docker compose version

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

文章版权声明:除非注明,否则均为TseKing的运维博客原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,680人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码