обавлена автоустановка git и curl в скрипт синхронизации
This commit is contained in:
@@ -1,24 +1,59 @@
|
|||||||
#!/bin/bash
|
#!/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"
|
DEST_DIR="/opt/server-tools"
|
||||||
|
|
||||||
echo "Запуск синхронизации скриптов..."
|
echo -e "${GREEN}Запуск синхронизации скриптов...${NC}"
|
||||||
|
|
||||||
if ! command -v git &> /dev/null; then
|
# Функция для установки программ в зависимости от версии Linux
|
||||||
echo "Ошибка: Git не установлен."
|
install_dependencies() {
|
||||||
exit 1
|
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
|
fi
|
||||||
|
|
||||||
|
# Основная логика: клонирование или обновление репозитория
|
||||||
if [ ! -d "$DEST_DIR" ]; then
|
if [ ! -d "$DEST_DIR" ]; then
|
||||||
echo "Клонирую репозиторий..."
|
echo "Папка не найдена. Выполняю первоначальное клонирование..."
|
||||||
git clone "$REPO_URL" "$DEST_DIR"
|
git clone "$REPO_URL" "$DEST_DIR"
|
||||||
else
|
else
|
||||||
echo "Обновляю репозиторий..."
|
echo "Папка существует. Обновляю до последней версии..."
|
||||||
cd "$DEST_DIR" || exit
|
cd "$DEST_DIR" || exit
|
||||||
|
|
||||||
|
# Отменяем любые случайные изменения на сервере и скачиваем свежее из Gitea
|
||||||
git reset --hard HEAD
|
git reset --hard HEAD
|
||||||
git pull origin main
|
git pull origin main
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Выдаем права на выполнение всем скачанным bash скриптам
|
||||||
find "$DEST_DIR/bash" -type f -name "*.sh" -exec chmod +x {} \;
|
find "$DEST_DIR/bash" -type f -name "*.sh" -exec chmod +x {} \;
|
||||||
echo "Готово!"
|
|
||||||
|
echo -e "${GREEN}Синхронизация успешно завершена!${NC}"
|
||||||
Reference in New Issue
Block a user