update scripts\update-script.sh

This commit is contained in:
vchikalkin 2026-03-17 16:38:04 +03:00
parent 7173e03d8a
commit 0490cb7826

View File

@ -1,50 +1,56 @@
#!/bin/sh #!/bin/sh
# URL вашего основного скрипта (залейте на GitHub/свой сервер) # ====== КОНФИГУРАЦИЯ ======
SCRIPT_URL="https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/scripts/update-files.sh" # URL исходного скрипта
SCRIPT_PATH="/opt/etc/update_files.sh" URL="https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/scripts/update-files.sh"
TMP_SCRIPT="/opt/tmp/update_files.sh.tmp" # Локальный путь, куда сохраняем
LOCAL="/opt/update-files.sh"
LOG="/opt/var/log/update_files.log" LOG="/opt/var/log/update_files.log"
TMP_DIR="/opt/tmp"
# Создаем необходимые директории mkdir -p "$TMP_DIR"
mkdir -p /opt/tmp /opt/var/log
# Проверяем существование лог-файла и создаем его если нужно
touch "$LOG"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
CHANGED=0
# Скачиваем свежую версию скрипта # Временный файл
wget -q -O "$TMP_SCRIPT" "$SCRIPT_URL" 2>/dev/null TMP_FILE="$TMP_DIR/update-files.tmp"
if [ $? -ne 0 ] || [ ! -s "$TMP_SCRIPT" ]; then # ====== СКАЧИВАЕМ ======
echo "$TIMESTAMP [LAUNCHER] Не удалось скачать скрипт, запускаю локальный" >> "$LOG" wget -q -O "$TMP_FILE" "$URL" 2>/dev/null
rm -f "$TMP_SCRIPT" if [ $? -ne 0 ] || [ ! -s "$TMP_FILE" ]; then
else echo "$TIMESTAMP [ERROR] Не удалось скачать или файл пустой: $URL" >> "$LOG"
# Сравниваем хеши rm -f "$TMP_FILE"
if [ -f "$SCRIPT_PATH" ]; then exit 1
OLD_SUM=$(md5sum "$SCRIPT_PATH" 2>/dev/null | cut -d' ' -f1)
else
OLD_SUM=""
fi
NEW_SUM=$(md5sum "$TMP_SCRIPT" | cut -d' ' -f1)
if [ "$OLD_SUM" != "$NEW_SUM" ]; then
# Копируем новый скрипт
cp "$TMP_SCRIPT" "$SCRIPT_PATH"
chmod +x "$SCRIPT_PATH"
echo "$TIMESTAMP [LAUNCHER] Скрипт обновлён" >> "$LOG"
else
echo "$TIMESTAMP [LAUNCHER] Скрипт не изменился" >> "$LOG"
fi
rm -f "$TMP_SCRIPT"
fi fi
# Запускаем основной скрипт # ====== СРАВНИВАЕМ ======
if [ -x "$SCRIPT_PATH" ]; then NEED_UPDATE=0
echo "$TIMESTAMP [LAUNCHER] Запуск основного скрипта" >> "$LOG" if [ ! -f "$LOCAL" ]; then
exec "$SCRIPT_PATH" NEED_UPDATE=1
else else
echo "$TIMESTAMP [LAUNCHER] Скрипт не найден!" >> "$LOG" OLD_SUM=$(md5sum "$LOCAL" | cut -d' ' -f1)
NEW_SUM=$(md5sum "$TMP_FILE" | cut -d' ' -f1)
[ "$OLD_SUM" != "$NEW_SUM" ] && NEED_UPDATE=1
fi fi
# ====== ОБНОВЛЯЕМ ======
if [ "$NEED_UPDATE" -eq 1 ]; then
mkdir -p "$(dirname "$LOCAL")"
cp "$TMP_FILE" "$LOCAL"
chmod +x "$LOCAL"
CHANGED=1
echo "$TIMESTAMP [UPDATED] $LOCAL <- $URL" >> "$LOG"
else
echo "$TIMESTAMP [OK] Изменений нет" >> "$LOG"
fi
rm -f "$TMP_FILE"
# ====== Ротация лога ======
if [ -f "$LOG" ]; then
LINES=$(wc -l < "$LOG")
[ "$LINES" -gt 200 ] && tail -100 "$LOG" > "$LOG.tmp" && mv "$LOG.tmp" "$LOG"
fi
exit 0