59 lines
2.9 KiB
Bash
59 lines
2.9 KiB
Bash
#!/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}" |