add scripts
This commit is contained in:
parent
e25756c27f
commit
8a1104ae07
91
scripts/update-files.sh
Normal file
91
scripts/update-files.sh
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# ====== КОНФИГУРАЦИЯ ======
|
||||||
|
|
||||||
|
# Формат: "URL|ЛОКАЛЬНЫЙ_ПУТЬ"
|
||||||
|
# Добавляйте сколько угодно пар
|
||||||
|
FILES="
|
||||||
|
https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/opt/etc/nfqws/user.list|/opt/etc/nfqws/user.list
|
||||||
|
"
|
||||||
|
|
||||||
|
RESTART_CMD="/opt/etc/init.d/rc.unslung restart"
|
||||||
|
LOG="/opt/var/log/update_files.log"
|
||||||
|
TMP_DIR="/opt/tmp"
|
||||||
|
|
||||||
|
# ====== ЛОГИКА ======
|
||||||
|
|
||||||
|
mkdir -p "$TMP_DIR"
|
||||||
|
CHANGED=0
|
||||||
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
for entry in $FILES; do
|
||||||
|
# Пропускаем пустые строки
|
||||||
|
[ -z "$entry" ] && continue
|
||||||
|
|
||||||
|
URL=$(echo "$entry" | cut -d'|' -f1)
|
||||||
|
LOCAL=$(echo "$entry" | cut -d'|' -f2)
|
||||||
|
|
||||||
|
[ -z "$URL" ] || [ -z "$LOCAL" ] && continue
|
||||||
|
|
||||||
|
TMP_FILE="$TMP_DIR/update_$(echo "$LOCAL" | md5sum | cut -d' ' -f1).tmp"
|
||||||
|
|
||||||
|
# Скачиваем
|
||||||
|
wget -q -O "$TMP_FILE" "$URL" 2>/dev/null
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "$TIMESTAMP [ERROR] Не удалось скачать: $URL" >> "$LOG"
|
||||||
|
rm -f "$TMP_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проверяем что файл не пустой
|
||||||
|
if [ ! -s "$TMP_FILE" ]; then
|
||||||
|
echo "$TIMESTAMP [WARN] Пустой файл: $URL" >> "$LOG"
|
||||||
|
rm -f "$TMP_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Сравниваем с текущим
|
||||||
|
NEED_UPDATE=0
|
||||||
|
|
||||||
|
if [ ! -f "$LOCAL" ]; then
|
||||||
|
# Файла ещё нет
|
||||||
|
NEED_UPDATE=1
|
||||||
|
else
|
||||||
|
# Сравниваем контрольные суммы
|
||||||
|
OLD_SUM=$(md5sum "$LOCAL" 2>/dev/null | cut -d' ' -f1)
|
||||||
|
NEW_SUM=$(md5sum "$TMP_FILE" | cut -d' ' -f1)
|
||||||
|
|
||||||
|
if [ "$OLD_SUM" != "$NEW_SUM" ]; then
|
||||||
|
NEED_UPDATE=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$NEED_UPDATE" -eq 1 ]; then
|
||||||
|
# Создаём директорию если нет
|
||||||
|
mkdir -p "$(dirname "$LOCAL")"
|
||||||
|
cp "$TMP_FILE" "$LOCAL"
|
||||||
|
CHANGED=1
|
||||||
|
echo "$TIMESTAMP [UPDATED] $LOCAL <- $URL" >> "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$TMP_FILE"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Перезапуск только если что-то изменилось
|
||||||
|
if [ "$CHANGED" -eq 1 ]; then
|
||||||
|
echo "$TIMESTAMP [RESTART] Перезапуск Entware..." >> "$LOG"
|
||||||
|
$RESTART_CMD >> "$LOG" 2>&1
|
||||||
|
echo "$TIMESTAMP [RESTART] Готово" >> "$LOG"
|
||||||
|
else
|
||||||
|
echo "$TIMESTAMP [OK] Изменений нет" >> "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ротация лога (оставляем последние 200 строк)
|
||||||
|
if [ -f "$LOG" ]; then
|
||||||
|
LINES=$(wc -l < "$LOG")
|
||||||
|
if [ "$LINES" -gt 200 ]; then
|
||||||
|
tail -100 "$LOG" > "$LOG.tmp"
|
||||||
|
mv "$LOG.tmp" "$LOG"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
50
scripts/update-script.sh
Normal file
50
scripts/update-script.sh
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# URL вашего основного скрипта (залейте на GitHub/свой сервер)
|
||||||
|
SCRIPT_URL="https://gitea.vchikalkin.dev/admin/keenetic-configs/raw/branch/master/scripts/update-files.sh"
|
||||||
|
SCRIPT_PATH="/opt/etc/update_files.sh"
|
||||||
|
TMP_SCRIPT="/opt/tmp/update_files.sh.tmp"
|
||||||
|
LOG="/opt/var/log/update_files.log"
|
||||||
|
|
||||||
|
# Создаем необходимые директории
|
||||||
|
mkdir -p /opt/tmp /opt/var/log
|
||||||
|
|
||||||
|
# Проверяем существование лог-файла и создаем его если нужно
|
||||||
|
touch "$LOG"
|
||||||
|
|
||||||
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
# Скачиваем свежую версию скрипта
|
||||||
|
wget -q -O "$TMP_SCRIPT" "$SCRIPT_URL" 2>/dev/null
|
||||||
|
|
||||||
|
if [ $? -ne 0 ] || [ ! -s "$TMP_SCRIPT" ]; then
|
||||||
|
echo "$TIMESTAMP [LAUNCHER] Не удалось скачать скрипт, запускаю локальный" >> "$LOG"
|
||||||
|
rm -f "$TMP_SCRIPT"
|
||||||
|
else
|
||||||
|
# Сравниваем хеши
|
||||||
|
if [ -f "$SCRIPT_PATH" ]; then
|
||||||
|
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
|
||||||
|
|
||||||
|
# Запускаем основной скрипт
|
||||||
|
if [ -x "$SCRIPT_PATH" ]; then
|
||||||
|
echo "$TIMESTAMP [LAUNCHER] Запуск основного скрипта" >> "$LOG"
|
||||||
|
exec "$SCRIPT_PATH"
|
||||||
|
else
|
||||||
|
echo "$TIMESTAMP [LAUNCHER] Скрипт не найден!" >> "$LOG"
|
||||||
|
fi
|
||||||
Loading…
x
Reference in New Issue
Block a user