From 5c75fc07d0673018d43f2f3c364f59c54873304b Mon Sep 17 00:00:00 2001 From: huangzhenpc Date: Tue, 15 Apr 2025 05:58:55 +0000 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- filter_token.sh | 149 ++++++++++++++++++++++++++++++++++++++++++++ import_token.sh | 157 +++++++++++++++++++++++++++++++++++++++++++++++ start_service.sh | 19 ++++++ stop_service.sh | 21 +++++++ 4 files changed, 346 insertions(+) create mode 100644 filter_token.sh create mode 100644 import_token.sh create mode 100644 start_service.sh create mode 100644 stop_service.sh diff --git a/filter_token.sh b/filter_token.sh new file mode 100644 index 0000000..bbb6ba2 --- /dev/null +++ b/filter_token.sh @@ -0,0 +1,149 @@ +#!/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}" \ No newline at end of file diff --git a/import_token.sh b/import_token.sh new file mode 100644 index 0000000..6dc6165 --- /dev/null +++ b/import_token.sh @@ -0,0 +1,157 @@ +#!/bin/bash +# import_token.sh - CursorTokenImport交互脚本 + +# 颜色定义 +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" + +# 确保工作目录存在 +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}请选择要导入的Token日期:${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 + +# 选择筛选条件 +echo -e "${BLUE}请选择筛选条件:${NC}" +echo "1) 使用量少于指定次数" +echo "2) 使用率低于指定百分比且剩余至少指定天数" +echo "3) 导入专业版账号" +echo "4) 自定义参数组合" +echo "5) 不使用筛选条件" +read -p "请输入选项 [1-5]: " filter_option + +case $filter_option in + 1) + read -p "请输入最大使用次数: " max_used + filter_param="--max-used=$max_used" + echo -e "${GREEN}筛选条件: 使用量少于 $max_used 次${NC}" + ;; + 2) + read -p "请输入最大使用率(%): " max_usage + read -p "请输入最小剩余天数: " min_days + filter_param="--max-usage=$max_usage --min-days=$min_days" + echo -e "${GREEN}筛选条件: 使用率低于 $max_usage% 且剩余至少 $min_days 天${NC}" + ;; + 3) + read -p "请输入最大使用次数: " max_used + filter_param="--source=pro --max-used=$max_used" + echo -e "${GREEN}筛选条件: 专业版账号使用量少于 $max_used 次${NC}" + ;; + 4) + echo -e "${YELLOW}请输入自定义参数 (例如: --max-usage=30 --min-days=2)${NC}" + read -p "自定义参数: " filter_param + echo -e "${GREEN}筛选条件: $filter_param${NC}" + ;; + 5) + filter_param="" + echo -e "${GREEN}不使用筛选条件${NC}" + ;; + *) + echo -e "${RED}无效选项,不使用筛选条件${NC}" + filter_param="" + ;; +esac + +# 构建命令 +CMD="php think CursorTokenImport" + +if [ -n "$date_param" ]; then + CMD="$CMD $date_param" +fi + +if [ -n "$filter_param" ]; then + CMD="$CMD $filter_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/import_$(date +%Y%m%d_%H%M%S).log" + echo -e "${GREEN}正在后台运行...${NC}" + nohup $CMD > "$LOG_FILE" 2>&1 & + PID=$! + echo $PID > import.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}" \ No newline at end of file diff --git a/start_service.sh b/start_service.sh new file mode 100644 index 0000000..0989071 --- /dev/null +++ b/start_service.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# start_service.sh - 启动服务脚本 + +# 颜色定义 +GREEN='\033[0;32m' +NC='\033[0m' # 恢复默认颜色 + +# 切换到工作目录 +cd /www/wwwroot/api2.nosqli.com + +# 如果venv存在则激活 +if [ -d "venv" ]; then + source venv/bin/activate +fi + +# 启动服务 +php think CursorTokenFilter >> runtime/log/service.log 2>&1 & +echo $! > service.pid +echo -e "${GREEN}服务已在后台启动,PID: $(cat service.pid)${NC}" \ No newline at end of file diff --git a/stop_service.sh b/stop_service.sh new file mode 100644 index 0000000..7ed8723 --- /dev/null +++ b/stop_service.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# stop_service.sh - 停止服务脚本 + +# 颜色定义 +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +NC='\033[0m' # 恢复默认颜色 + +# 切换到工作目录 +cd /www/wwwroot/api2.nosqli.com + +# 检查PID文件 +if [ -f service.pid ]; then + pid=$(cat service.pid) + echo -e "${YELLOW}停止PID为 $pid 的服务...${NC}" + kill $pid + rm service.pid + echo -e "${GREEN}服务已停止${NC}" +else + echo -e "${YELLOW}找不到PID文件,服务可能未运行${NC}" +fi \ No newline at end of file