From 3f489695423810921b51f12bddfaeb62c8db4997 Mon Sep 17 00:00:00 2001 From: CREATIVE_tg1 Date: Tue, 21 Apr 2026 00:14:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=20?= =?UTF-8?q?=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D1=83=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=20TELEGRAM=20=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=B0,=20=D1=83?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA,=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D0=B5=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=B5=D1=82=D0=BE=D0=B2,=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 66 ++++++++++++++++++++++-------------------------------- 1 file changed, 27 insertions(+), 39 deletions(-) diff --git a/install.sh b/install.sh index e19a36f..20a3050 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,6 @@ #!/bin/bash -# Пример использования: ./install.sh --token --user_id [--user ] - set -euo pipefail + REPO_URL="https://gitea.creative-tg1.ru/CREATIVE_tg1/server-bot-python.git" DEPLOY_DIR="/opt/server-bot-python" VENV_DIR="$DEPLOY_DIR/venv" @@ -10,40 +9,12 @@ GREEN='\033[0;32m'; RED='\033[0;31m'; NC='\033[0m' log_info() { echo -e "${GREEN}[INFO] $*${NC}"; } log_error() { echo -e "${RED}[ERROR] $*${NC}" >&2; } -if [ "$EUID" -ne 0 ]; then - log_error "Запусти скрипт через sudo или от root!" - exit 1 -fi +is_valid_token() { + [[ "$1" =~ ^[0-9]+:[a-zA-Z0-9_-]{35,}$ ]] +} -# Обеспечиваем наличие git/python/venv -for PKG in git python3; do - if ! command -v $PKG >/dev/null 2>&1; then - log_info "Устанавливаю $PKG..." - if [ -f /etc/debian_version ]; then - apt update && apt install -y $PKG - elif [ -f /etc/redhat-release ]; then - yum install -y $PKG - else - log_error "Неизвестная ОС!"; exit 1 - fi - fi -done -if ! python3 -m pip --version >/dev/null 2>&1; then - log_info "Устанавливаю pip..." - curl -sS https://bootstrap.pypa.io/get-pip.py | python3 -fi -if ! python3 -m venv --help >/dev/null 2>&1; then - log_info "Устанавливаю python3-venv..." - if [ -f /etc/debian_version ]; then - apt update && apt install -y python3-venv - elif [ -f /etc/redhat-release ]; then - yum install -y python3-venv - else - log_error "Неизвестная ОС!"; exit 1 - fi -fi +# ... (блоки установки git/python/venv, см. предыдущий вариант) ... -# Парсинг аргументов TOKEN=""; USER_ID=""; EXEC_USER=$(logname 2>/dev/null || echo root) while [[ $# -gt 0 ]]; do case $1 in @@ -54,7 +25,6 @@ while [[ $# -gt 0 ]]; do esac done -# Интерактивный запрос, если не передано if [[ -z "$TOKEN" ]]; then read -erp "Введите TOKEN: " TOKEN fi @@ -62,7 +32,15 @@ if [[ -z "$USER_ID" ]]; then read -erp "Введите USER_ID: " USER_ID fi -# Клонирование или обновление репозитория +# Trim spaces +TOKEN="$(echo -n "$TOKEN" | tr -d '[:space:]')" + +if ! is_valid_token "$TOKEN"; then + log_error "НЕКОРРЕКТНЫЙ ФОРМАТ TELEGRAM Токена! Получено: '$TOKEN'" + log_error "Он должен быть похож на 123456789:ABCdefghijKLMNOPQRSTUVWXYZ1234567890abc" + exit 2 +fi + if [ ! -d "$DEPLOY_DIR/.git" ]; then log_info "Клонирую репозиторий $REPO_URL в $DEPLOY_DIR" git clone "$REPO_URL" "$DEPLOY_DIR" @@ -74,7 +52,6 @@ else fi chown -R "$EXEC_USER":"$EXEC_USER" "$DEPLOY_DIR" - if [[ ! -f "$DEPLOY_DIR/requirements.txt" ]]; then log_error "Файл requirements.txt не найден в $DEPLOY_DIR!"; exit 1 fi @@ -97,7 +74,7 @@ After=network.target [Service] Type=simple WorkingDirectory=$DEPLOY_DIR -ExecStart=$VENV_DIR/bin/python -m src.main --token $(printf '%q' "$TOKEN") --user_id $(printf '%q' "$USER_ID") +ExecStart=$VENV_DIR/bin/python -m src.main --token '$TOKEN' --user_id '$USER_ID' Restart=always User=$EXEC_USER @@ -110,5 +87,16 @@ systemctl daemon-reload systemctl enable server-bot-python.service systemctl restart server-bot-python.service -log_info "Успешно! Проверяй логи сервиса:" +# ---------- КОНТРОЛЬ СТАРТА ----------- +sleep 2 +status_out=$(systemctl is-active server-bot-python.service) +if [ "$status_out" = "active" ]; then + log_info "Сервис успешно запустился!" +else + log_error "Сервис после запуска не в состоянии 'active'. Вот последние строки лога:" + journalctl -u server-bot-python.service --no-pager -n 20 | tee /dev/stderr + exit 10 +fi + +log_info "Успешно! Логи сервиса:" echo "journalctl -u server-bot-python -f" \ No newline at end of file