通过PROMPT_COMMAND环境变量,巧妙记录用户执行指令

修改/etc/profile文件,增加如下内容,可以记录每个用户执行指令到临时文件夹。

#变更bash的环境变量,记录登录用户的操作命令。
export HISTORY_FILE=/tmp/history_$USER

USERNAME=$(who am i | awk -F ' ' '{print $1 $5}')

# 确保 HISTORY_FILE 存在且可写
if [ ! -f "$HISTORY_FILE" ]; then
  touch "$HISTORY_FILE"
  chmod 600 "$HISTORY_FILE"
fi

# 安全地获取最近一条命令
get_last_command() {
  local last_cmd=$(history 1)
  if [[ -n "$last_cmd" ]]; then
    echo "$last_cmd" | cut -d' ' -f2-
  else
    echo "No command found"
  fi
}

export PROMPT_COMMAND='{
  last_cmd=$(get_last_command)
  if [[ -n "$last_cmd" ]]; then
    echo "$(date "+%Y-%m-%d %H:%M:%S [$USERNAME] ### $last_cmd")" >> "$HISTORY_FILE"
  fi
}'

效果:


1734056620836.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 环境变量概述 环境变量(Environment Variables)一般是指在操作系统中用来指定操作系统运行环境的...
    rosy_dawn阅读 10,365评论 1 12
  • 作者:刘绵宇 系统变量和用户变量 运行plink时由于路径设置导致浪费了很多时间这里做一些区分点击“我的电脑→属性...
    虾里巴人阅读 3,068评论 0 1
  • 一、环境变量的概念 1.1. 环境变量的含义 程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个...
    李白开水阅读 1,023评论 0 0
  • 环境变量: 官方定义:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运...
    路上_439c阅读 12,160评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139