update script

This commit is contained in:
2026-01-18 04:02:57 +08:00
parent a4ca3ec093
commit 07816afd8d

View File

@@ -8,7 +8,6 @@ set -e
SERVICE_NAME="oai-team-bot"
SERVICE_DESC="OpenAI Team Provisioner Bot"
WORK_DIR="$(cd "$(dirname "$0")" && pwd)"
PYTHON_BIN="${WORK_DIR}/.venv/bin/python"
SCRIPT_NAME="telegram_bot.py"
USER="${SUDO_USER:-root}"
@@ -38,18 +37,36 @@ check_env() {
exit 1
fi
# 检查 Python 环境
if [ ! -f "$PYTHON_BIN" ]; then
log_warn "未找到 .venv尝试使用系统 Python"
# 检测 uv
if command -v uv &> /dev/null && [ -f "${WORK_DIR}/pyproject.toml" ]; then
UV_BIN=$(which uv)
# 先执行 uv sync 安装依赖
log_info "执行 uv sync 安装依赖..."
cd "${WORK_DIR}"
sudo -u ${USER} ${UV_BIN} sync
log_success "依赖安装完成"
# 使用 uv run 运行
EXEC_CMD="${UV_BIN} run python ${SCRIPT_NAME}"
log_info "使用 uv run 运行"
elif [ -f "${WORK_DIR}/.venv/bin/python" ]; then
# 使用 .venv
EXEC_CMD="${WORK_DIR}/.venv/bin/python ${WORK_DIR}/${SCRIPT_NAME}"
log_info "使用 .venv 虚拟环境"
else
# 使用系统 python
PYTHON_BIN=$(which python3 || which python)
if [ -z "$PYTHON_BIN" ]; then
log_error "找不到 Python"
log_error "找不到 Python 或 uv"
exit 1
fi
EXEC_CMD="${PYTHON_BIN} ${WORK_DIR}/${SCRIPT_NAME}"
log_warn "使用系统 Python可能缺少依赖"
fi
log_info "工作目录: ${WORK_DIR}"
log_info "Python: ${PYTHON_BIN}"
log_info "启动命令: ${EXEC_CMD}"
log_info "运行用户: ${USER}"
}
@@ -57,6 +74,12 @@ check_env() {
install_service() {
log_info "正在安装 ${SERVICE_NAME} 服务..."
# 获取 uv 路径用于 PATH
UV_PATH=""
if command -v uv &> /dev/null; then
UV_PATH="$(dirname $(which uv)):"
fi
# 创建 systemd service 文件
cat > /etc/systemd/system/${SERVICE_NAME}.service << EOF
[Unit]
@@ -69,7 +92,7 @@ Type=simple
User=${USER}
Group=${USER}
WorkingDirectory=${WORK_DIR}
ExecStart=${PYTHON_BIN} ${WORK_DIR}/${SCRIPT_NAME}
ExecStart=${EXEC_CMD}
Restart=always
RestartSec=10
StandardOutput=journal
@@ -78,11 +101,11 @@ StandardError=journal
# 环境变量
Environment="PYTHONUNBUFFERED=1"
Environment="LOG_LEVEL=INFO"
Environment="PATH=${UV_PATH}/usr/local/bin:/usr/bin:/bin"
Environment="HOME=/root"
# 安全限制
# 安全限制 (root 用户不使用 ProtectSystem)
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=${WORK_DIR}
[Install]
WantedBy=multi-user.target