#!/bin/bash # Доставка cookies на прод и тестовый стенд. # # Запускается ВРУЧНУЮ после разового экспорта cookies из браузера — не по крону. # Как правильно экспортировать cookies, см. README.md рядом с этим скриптом. # Автоматический экспорт через `yt-dlp --cookies-from-browser` убран намеренно: # он ломает YouTube-сессию ("cookies have likely been rotated in the browser"). set -euo pipefail # Определяем директорию скрипта SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # Настройки INSTAGRAM_COOKIES="$SCRIPT_DIR/instagram_cookies.txt" YOUTUBE_COOKIES="$SCRIPT_DIR/youtube_cookies.txt" REMOTE_HOST="germany" REMOTE_INSTAGRAM_PATH="/root/services/videoDownloadTGbot/instagram_cookies.txt" REMOTE_YOUTUBE_PATH="/root/services/videoDownloadTGbot/youtube_cookies.txt" DEV_HOST="hermesDev" DEV_INSTAGRAM_PATH="services/videoDownloadTGbot/instagram-downloader/instagram_cookies.txt" DEV_YOUTUBE_PATH="services/videoDownloadTGbot/youtube-downloader/youtube_cookies.txt" LOG_FILE="$SCRIPT_DIR/deliver.log" # Функция логирования log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE" } # Функция обработки ошибок error_exit() { log "ОШИБКА: $*" exit 1 } # Проверяет, что файл существует и содержит хотя бы одну строку с cookie check_cookies_file() { local file="$1" local name="$2" if [ ! -f "$file" ]; then error_exit "Файл не найден: $file. Сначала экспортируйте cookies $name — см. README.md" fi local lines lines=$(grep -cv -e '^#' -e '^$' "$file" || true) if [ "$lines" -eq 0 ]; then error_exit "Файл $file пустой (0 строк с cookies). Экспорт $name не удался — см. README.md" fi log "✅ $name: $file ($lines строк с cookies)" } log "=== Начало доставки cookies ===" check_cookies_file "$INSTAGRAM_COOKIES" "Instagram" check_cookies_file "$YOUTUBE_COOKIES" "YouTube" # Копируем cookies на удаленный хост (прод) log "Копирование cookies на удаленный хост $REMOTE_HOST..." # Копируем Instagram cookies if scp -q "$INSTAGRAM_COOKIES" "${REMOTE_HOST}:${REMOTE_INSTAGRAM_PATH}" 2>>"$LOG_FILE"; then log "✅ Instagram cookies скопированы на $REMOTE_HOST" else error_exit "Ошибка при копировании Instagram cookies (код возврата: $?)" fi # Копируем YouTube cookies if scp -q "$YOUTUBE_COOKIES" "${REMOTE_HOST}:${REMOTE_YOUTUBE_PATH}" 2>>"$LOG_FILE"; then log "✅ YouTube cookies скопированы на $REMOTE_HOST" else error_exit "Ошибка при копировании YouTube cookies (код возврата: $?)" fi # Копируем cookies на тестовый стенд (не блокируем прод-доставку, если стенд недоступен) log "Копирование cookies на тестовый стенд $DEV_HOST..." if scp -q "$INSTAGRAM_COOKIES" "${DEV_HOST}:${DEV_INSTAGRAM_PATH}" 2>>"$LOG_FILE"; then log "✅ Instagram cookies скопированы на $DEV_HOST" else log "⚠️ Не удалось скопировать Instagram cookies на $DEV_HOST (продолжаем)" fi if scp -q "$YOUTUBE_COOKIES" "${DEV_HOST}:${DEV_YOUTUBE_PATH}" 2>>"$LOG_FILE"; then log "✅ YouTube cookies скопированы на $DEV_HOST" else log "⚠️ Не удалось скопировать YouTube cookies на $DEV_HOST (продолжаем)" fi log "=== Доставка cookies завершена успешно ===" log "Проверить результат: ssh ${REMOTE_HOST} \"curl -s -X POST localhost:5557/cookies/check; curl -s -X POST localhost:5556/cookies/check\"" exit 0