#!/bin/bash # Установочный скрипт для Linux Gaming News Bot # Создает systemd service и настраивает его для автозапуска set -e # Выход при любой ошибке # Цвета для вывода RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Функции для цветного вывода print_info() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Проверка запуска от root if [ "$EUID" -ne 0 ]; then print_error "Скрипт должен быть запущен с правами root (sudo)" print_info "Используйте: sudo ./install-service.sh" exit 1 fi # Определение текущего пользователя (не root) REAL_USER=$(who am i | awk '{print $1}') if [ -z "$REAL_USER" ]; then REAL_USER=$(logname 2>/dev/null || echo $SUDO_USER) fi if [ -z "$REAL_USER" ]; then print_error "Не удалось определить имя пользователя" exit 1 fi print_info "Установка сервиса для пользователя: $REAL_USER" # Определение директории проекта SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$SCRIPT_DIR" print_info "Директория проекта: $PROJECT_DIR" # Проверка существования файлов if [ ! -f "$PROJECT_DIR/news-bot-modular.py" ]; then print_error "Не найден файл news-bot-modular.py в $PROJECT_DIR" exit 1 fi if [ ! -f "$PROJECT_DIR/bot-news-linux-gaming.service" ]; then print_error "Не найден файл bot-news-linux-gaming.service в $PROJECT_DIR" exit 1 fi # Проверка наличия keys.py if [ ! -f "$PROJECT_DIR/keys.py" ]; then print_warning "Не найден файл keys.py с настройками" print_info "Создайте keys.py на основе keys_example.py перед запуском сервиса:" print_info " cp keys_example.py keys.py" print_info " nano keys.py # заполните реальными ключами" fi # Создание временного файла сервиса с правильными путями TEMP_SERVICE=$(mktemp) sed "s|/home/xpamych/Yandex.Disk/IdeaProjects/bot-news-linux-gaming|$PROJECT_DIR|g" "$PROJECT_DIR/bot-news-linux-gaming.service" > "$TEMP_SERVICE" sed -i "s|User=xpamych|User=$REAL_USER|g" "$TEMP_SERVICE" sed -i "s|Group=xpamych|Group=$REAL_USER|g" "$TEMP_SERVICE" print_info "Копирование systemd unit файла..." cp "$TEMP_SERVICE" /etc/systemd/system/bot-news-linux-gaming.service rm "$TEMP_SERVICE" print_info "Установка прав доступа..." chmod 644 /etc/systemd/system/bot-news-linux-gaming.service chown root:root /etc/systemd/system/bot-news-linux-gaming.service print_info "Перезагрузка systemd..." systemctl daemon-reload print_success "Сервис успешно установлен!" print_info "" print_info "Для управления сервисом используйте команды:" print_info " sudo systemctl enable bot-news-linux-gaming # Включить автозапуск" print_info " sudo systemctl start bot-news-linux-gaming # Запустить сервис" print_info " sudo systemctl status bot-news-linux-gaming # Посмотреть статус" print_info " sudo systemctl stop bot-news-linux-gaming # Остановить сервис" print_info " sudo systemctl disable bot-news-linux-gaming # Отключить автозапуск" print_info "" print_info "Логи сервиса:" print_info " sudo journalctl -u bot-news-linux-gaming -f # Следить за логами" print_info " sudo journalctl -u bot-news-linux-gaming -n 50 # Последние 50 строк" print_info "" # Предложение сразу включить и запустить read -p "Включить автозапуск и запустить сервис сейчас? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then print_info "Включение автозапуска..." systemctl enable bot-news-linux-gaming print_info "Запуск сервиса..." systemctl start bot-news-linux-gaming sleep 2 print_info "Статус сервиса:" systemctl status bot-news-linux-gaming --no-pager print_success "Сервис запущен и добавлен в автозагрузку!" else print_info "Сервис установлен, но не запущен. Запустите его командой:" print_info " sudo systemctl enable --now bot-news-linux-gaming" fi