tianyun 8 tháng trước cách đây
mục cha
commit
4589f1fbfe

+ 3 - 0
README.md

@@ -24,3 +24,6 @@ sync_config_file
 wget https://git.tianyunperfect.cn/tianyunperfect/sync/raw/master/sh_config.sh -O ~/.sh_config.sh && echo 'source ~/.sh_config.sh' >> ~/.bashrc
 ```
 
+- 一般需要设置
+- vim
+- 

+ 43 - 0
app/install_monitor_user_command_bash.sh

@@ -0,0 +1,43 @@
+#!/bin/bash
+# 监控用户命令
+
+cat >> ~/.bashrc << 'EOB'
+
+# ============= 监控用户命令 =============
+# preexec 函数,在命令执行前调用
+preexec() {
+    local command="$BASH_COMMAND"
+    # 忽略内部命令
+    if [[ "$command" == "precmd" || "$command" == "preexec_invoke_exec" ]]; then
+        return
+    fi
+    local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
+    local user=$(whoami)
+    local cwd=$(pwd)
+    echo "$timestamp - $user - $cwd - START: $command" >> /tmp/users-command.log
+}
+
+# precmd 函数,在命令执行后调用
+precmd() {
+    local exit_code=$?
+    local last_command=$(HISTTIMEFORMAT= history 1 | sed 's/^ *[0-9]\+ *//')
+    local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
+    local user=$(whoami)
+    local cwd=$(pwd)
+    echo "$timestamp - $user - $cwd - END: $last_command [exit code: $exit_code]" >> /tmp/users-command.log
+}
+
+# 设置 preexec 功能
+preexec_invoke_exec() {
+    [ -n "$COMP_LINE" ] && return  # 如果是补全命令,则不执行
+    preexec "$(history 1 | sed 's/^ *[0-9]\+ *//')"
+}
+trap 'preexec_invoke_exec' DEBUG
+
+# 设置 precmd 功能
+PROMPT_COMMAND="precmd; $PROMPT_COMMAND"
+# ============= 监控用户命令 =============
+
+EOB
+
+echo "安装完成: source ~/.bashrc ,请查看:/tmp/users-command.log"

+ 37 - 0
app/install_monitor_user_command_zsh.sh

@@ -0,0 +1,37 @@
+#!/bin/bash
+# 监控用户命令
+
+cat >> ~/.zshrc << 'EOZ'
+
+# ============= 监控用户命令 =============
+preexec() {
+    # Get current date and time
+    timestamp=$(date "+%Y-%m-%d %H:%M:%S")
+    # Get current user
+    user=$(whoami)
+    # Get current directory
+    cwd=$(pwd)
+    # Print command execution info
+    echo "$timestamp - $user - $cwd - START: $1" >> /tmp/users-command.log
+}
+
+# 记录命令执行后
+precmd() {
+    # 获取命令返回值
+    exit_code=$?
+    # 获取上一条命令
+    last_command=$(fc -ln -1)
+    # 获取当前日期和时间
+    timestamp=$(date "+%Y-%m-%d %H:%M:%S")
+    # 获取当前用户
+    user=$(whoami)
+    # 获取当前目录
+    cwd=$(pwd)
+    # 打印命令执行后的信息
+    echo "$timestamp - $user - $cwd - END: $last_command [exit code: $exit_code]" >> /tmp/users-command.log
+}
+# ============= 监控用户命令 =============
+
+EOZ
+
+echo "安装完成: source ~/.zshrc ,请查看:/tmp/users-command.log"