Files
server-tools/auto-update/sync_scripts.sh

59 lines
2.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ==============================================================================
# Скрипт: 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 -e "${GREEN}Запуск синхронизации скриптов...${NC}"
# Функция для установки программ в зависимости от версии 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 "Папка не найдена. Выполняю первоначальное клонирование..."
git clone "$REPO_URL" "$DEST_DIR"
else
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 -e "${GREEN}Синхронизация успешно завершена!${NC}"