#!/bin/bash # filter_token.sh - CursorTokenFilter交互脚本 # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # 恢复默认颜色 # 工作目录 WORK_DIR="/www/wwwroot/api2.nosqli.com" LOG_DIR="$WORK_DIR/runtime/log" DEFAULT_OUTPUT="$WORK_DIR/tokens_$(date +%Y%m%d).csv" # 确保工作目录存在 cd "$WORK_DIR" || { echo -e "${RED}错误: 无法进入工作目录 $WORK_DIR${NC}" exit 1 } # 如果venv存在则激活 if [ -d "venv" ]; then source venv/bin/activate fi # 显示标题 echo -e "${GREEN}=================================${NC}" echo -e "${GREEN} Cursor Token 筛选工具 ${NC}" echo -e "${GREEN}=================================${NC}" # 选择日期 echo -e "${BLUE}请选择要筛选的日期:${NC}" echo "1) 今天" echo "2) 昨天" echo "3) 前天" echo "4) 指定日期" echo "5) 默认(不指定日期)" read -p "请输入选项 [1-5]: " date_option case $date_option in 1) date_param=$(date +%Y%m%d) echo -e "${GREEN}已选择今天: $date_param${NC}" ;; 2) date_param=$(date -d "yesterday" +%Y%m%d) echo -e "${GREEN}已选择昨天: $date_param${NC}" ;; 3) date_param=$(date -d "2 days ago" +%Y%m%d) echo -e "${GREEN}已选择前天: $date_param${NC}" ;; 4) read -p "请输入日期 (格式: YYYYMMDD): " date_param echo -e "${GREEN}已选择指定日期: $date_param${NC}" ;; 5) date_param="" echo -e "${GREEN}使用默认日期${NC}" ;; *) echo -e "${RED}无效选项,使用默认日期${NC}" date_param="" ;; esac # 是否仅显示有效Token echo -e "${BLUE}是否仅显示有效Token?${NC}" echo "1) 是" echo "2) 否" read -p "请输入选项 [1-2]: " valid_option if [ "$valid_option" = "1" ]; then valid_param="--valid-only" echo -e "${GREEN}仅显示有效Token${NC}" else valid_param="" echo -e "${GREEN}显示所有Token${NC}" fi # 自定义输出路径 echo -e "${BLUE}是否使用自定义输出路径?${NC}" echo "1) 是" echo "2) 否 (使用默认路径: $DEFAULT_OUTPUT)" read -p "请输入选项 [1-2]: " output_option if [ "$output_option" = "1" ]; then read -p "请输入输出CSV文件路径: " output_param echo -e "${GREEN}使用自定义输出路径: $output_param${NC}" else output_param=$DEFAULT_OUTPUT echo -e "${GREEN}使用默认输出路径: $output_param${NC}" fi # 构建命令 if [ -n "$date_param" ]; then CMD="php think CursorTokenFilter $date_param" else CMD="php think CursorTokenFilter" fi if [ -n "$valid_param" ]; then CMD="$CMD $valid_param" fi if [ -n "$output_param" ]; then CMD="$CMD --output=$output_param" fi # 询问运行模式 echo -e "${BLUE}请选择运行模式:${NC}" echo "1) 前台运行" echo "2) 后台运行" read -p "请输入选项 [1-2]: " run_mode # 显示将要执行的命令 echo -e "${YELLOW}即将执行命令: $CMD${NC}" read -p "按回车键确认执行..." confirm # 根据运行模式执行命令 if [ "$run_mode" = "2" ]; then # 后台运行 LOG_FILE="$LOG_DIR/filter_$(date +%Y%m%d_%H%M%S).log" echo -e "${GREEN}正在后台运行...${NC}" nohup $CMD > "$LOG_FILE" 2>&1 & PID=$! echo $PID > filter.pid echo -e "${GREEN}服务已在后台启动,PID: $PID${NC}" echo -e "${GREEN}日志文件: $LOG_FILE${NC}" # 询问是否实时查看日志 echo -e "${BLUE}是否实时查看日志?${NC}" echo "1) 是" echo "2) 否" read -p "请输入选项 [1-2]: " view_log if [ "$view_log" = "1" ]; then echo -e "${GREEN}正在查看日志,按Ctrl+C退出日志查看...${NC}" tail -f "$LOG_FILE" fi else # 前台运行 echo -e "${GREEN}正在前台运行...${NC}" $CMD echo -e "${GREEN}执行完成${NC}" fi echo -e "${GREEN}操作完成!${NC}"