From c4a33e3740c26ab2d9f516ca2590c825905b465b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 13 Apr 2026 23:39:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B0=D0=B2=D1=82=D0=BE=D1=83=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20git=20=D0=B8=20curl=20=D0=B2=20?= =?UTF-8?q?=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D1=81=D0=B8=D0=BD=D1=85?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto-update/sync_scripts.sh | 53 ++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/auto-update/sync_scripts.sh b/auto-update/sync_scripts.sh index 87528bd..41b718a 100644 --- a/auto-update/sync_scripts.sh +++ b/auto-update/sync_scripts.sh @@ -1,24 +1,59 @@ #!/bin/bash -# Замени Tvoi_Login на свой логин в Gitea -REPO_URL="https://gitlab.alex2py.ru/Tvoi_Login/server-tools.git" +# ============================================================================== +# Скрипт: sync_scripts.sh +# Описание: Автоматически скачивает или обновляет репозиторий со скриптами. +# Сам устанавливает git и curl, если их нет на сервере. +# ============================================================================== + +set -e # Останавливаем скрипт, если произойдет критическая ошибка +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +REPO_URL="https://gitlab.alex2py.ru/uristalex/server-tools.git" DEST_DIR="/opt/server-tools" -echo "Запуск синхронизации скриптов..." +echo -e "${GREEN}Запуск синхронизации скриптов...${NC}" -if ! command -v git &> /dev/null; then - echo "Ошибка: Git не установлен." - exit 1 +# Функция для установки программ в зависимости от версии Linux +install_dependencies() { + echo -e "${YELLOW}Отсутствуют нужные программы. Начинаю автоматическую установку...${NC}" + # Проверяем наличие apt (Ubuntu/Debian) + if command -v apt-get &> /dev/null; then + apt-get update -qq + apt-get install -y git curl + # Проверяем наличие dnf (Новые CentOS/Fedora) + elif command -v dnf &> /dev/null; then + dnf install -y git curl + # Проверяем наличие yum (Старые CentOS/RedHat) + elif command -v yum &> /dev/null; then + yum install -y git curl + else + echo -e "${YELLOW}Ошибка: Не удалось определить пакетный менеджер. Установите git вручную.${NC}" + exit 1 + fi + echo -e "${GREEN}Программы успешно установлены!${NC}" +} + +# Проверяем, установлены ли git и curl. Если нет — вызываем нашу функцию. +if ! command -v git &> /dev/null || ! command -v curl &> /dev/null; then + install_dependencies fi +# Основная логика: клонирование или обновление репозитория if [ ! -d "$DEST_DIR" ]; then - echo "Клонирую репозиторий..." + echo "Папка не найдена. Выполняю первоначальное клонирование..." git clone "$REPO_URL" "$DEST_DIR" else - echo "Обновляю репозиторий..." + echo "Папка существует. Обновляю до последней версии..." cd "$DEST_DIR" || exit + + # Отменяем любые случайные изменения на сервере и скачиваем свежее из Gitea git reset --hard HEAD git pull origin main fi +# Выдаем права на выполнение всем скачанным bash скриптам find "$DEST_DIR/bash" -type f -name "*.sh" -exec chmod +x {} \; -echo "Готово!" \ No newline at end of file + +echo -e "${GREEN}Синхронизация успешно завершена!${NC}" \ No newline at end of file