update-iventoy.sh aktualisiert

This commit is contained in:
2026-09-07 01:19:06 +02:00
parent 7482222d52
commit c618e384cc
+110 -67
View File
@@ -12,9 +12,10 @@ CONFIG_FILE="${CONFIG_DIR}/config.dat"
SERVICE="iventoy" SERVICE="iventoy"
TMP="/tmp/iventoy-update" TMP="/tmp/iventoy-update"
GITHUB_REPO="ventoy/PXE" GITHUB_REPO="ventoy/PXE"
MAX_BACKUPS=10
echo "==========================================" echo "=========================================="
echo " iVentoy Update" echo " iVentoy Update"
echo "==========================================" echo "=========================================="
@@ -43,38 +44,10 @@ apt-get install -y -qq curl tar >/dev/null
mkdir -p "$ISO_DIR" mkdir -p "$ISO_DIR"
mkdir -p "$CONFIG_DIR" mkdir -p "$CONFIG_DIR"
# --------------------------------------------------
# Existing config sichern / initial übernehmen
# --------------------------------------------------
if [ ! -f "$CONFIG_FILE" ]; then
if [ -f "${CURRENT}/data/config.dat" ]; then
echo "Übernehme bestehende iVentoy Config..."
cp -a "${CURRENT}/data/config.dat" "$CONFIG_FILE"
else
echo "WARNUNG: Keine bestehende config.dat gefunden."
fi
fi
# Backup
if [ -f "$CONFIG_FILE" ]; then
BACKUP="${CONFIG_FILE}.bak-$(date +%Y%m%d-%H%M%S)"
echo "Sichere Config nach:"
echo " $BACKUP"
cp -a "$CONFIG_FILE" "$BACKUP"
fi
# -------------------------------------------------- # --------------------------------------------------
# Latest Version ermitteln # Latest Version ermitteln
# -------------------------------------------------- # --------------------------------------------------
echo
echo "Ermittle aktuelle iVentoy-Version..." echo "Ermittle aktuelle iVentoy-Version..."
LATEST_TAG=$( LATEST_TAG=$(
@@ -92,45 +65,101 @@ if [ -z "$VERSION" ]; then
exit 1 exit 1
fi fi
echo "Neueste Version: $VERSION"
TARGET="${BASE}/iventoy-${VERSION}" TARGET="${BASE}/iventoy-${VERSION}"
echo "Neueste Version: $VERSION"
# -------------------------------------------------- # --------------------------------------------------
# Prüfen ob bereits installiert # Prüfen ob bereits aktuell
# --------------------------------------------------
if [ -L "$CURRENT" ]; then
CURRENT_TARGET=$(readlink -f "$CURRENT" || true)
if [ "$CURRENT_TARGET" = "$TARGET" ]; then
echo
echo "=========================================="
echo " iVentoy ist bereits aktuell"
echo "=========================================="
echo
echo "Aktive Version: $VERSION"
echo "Installation: $CURRENT -> $TARGET"
echo
exit 0
fi
fi
# --------------------------------------------------
# Bestehende Config übernehmen
# --------------------------------------------------
if [ ! -f "$CONFIG_FILE" ]; then
if [ -f "${CURRENT}/data/config.dat" ]; then
echo
echo "Übernehme bestehende iVentoy Config..."
cp -a "${CURRENT}/data/config.dat" "$CONFIG_FILE"
else
echo
echo "WARNUNG: Keine bestehende config.dat gefunden."
fi
fi
# --------------------------------------------------
# Config Backup
# --------------------------------------------------
if [ -f "$CONFIG_FILE" ]; then
BACKUP="${CONFIG_FILE}.bak-$(date +%Y%m%d-%H%M%S)"
echo
echo "Sichere Config:"
echo " $BACKUP"
cp -a "$CONFIG_FILE" "$BACKUP"
# --------------------------------------------------
# Backup Rotation
# --------------------------------------------------
echo "Behalte maximal ${MAX_BACKUPS} Config-Backups..."
find "$CONFIG_DIR" \
-maxdepth 1 \
-type f \
-name 'config.dat.bak-*' \
-printf '%T@ %p\n' \
| sort -nr \
| tail -n +"$((MAX_BACKUPS + 1))" \
| cut -d' ' -f2- \
| xargs -r rm -f
fi
# --------------------------------------------------
# Download / Entpacken
# -------------------------------------------------- # --------------------------------------------------
if [ -d "$TARGET" ]; then if [ -d "$TARGET" ]; then
echo echo
echo "Version $VERSION ist bereits unter" echo "Version $VERSION ist bereits vorhanden:"
echo " $TARGET" echo " $TARGET"
echo "vorhanden."
else else
# --------------------------------------------------
# Download
# --------------------------------------------------
rm -rf "$TMP" rm -rf "$TMP"
mkdir -p "$TMP" mkdir -p "$TMP"
ARCHIVE="iventoy-${VERSION}-linux-x86_64-free.tar.gz" ARCHIVE="iventoy-${VERSION}-linux-x86_64-free.tar.gz"
URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION}/${ARCHIVE}" URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION}/${ARCHIVE}"
echo echo
echo "Lade herunter:" echo "Lade herunter:"
echo " $URL" echo " $URL"
curl -fL \ curl -fL "$URL" -o "${TMP}/${ARCHIVE}"
"$URL" \
-o "${TMP}/${ARCHIVE}"
# --------------------------------------------------
# Entpacken
# --------------------------------------------------
echo echo
echo "Entpacke iVentoy..." echo "Entpacke iVentoy..."
@@ -140,7 +169,8 @@ else
EXTRACTED="${TMP}/iventoy-${VERSION}" EXTRACTED="${TMP}/iventoy-${VERSION}"
if [ ! -d "$EXTRACTED" ]; then if [ ! -d "$EXTRACTED" ]; then
echo "ERROR: Erwartetes Verzeichnis $EXTRACTED nicht gefunden." echo "ERROR: Erwartetes Verzeichnis wurde nicht gefunden:"
echo " $EXTRACTED"
exit 1 exit 1
fi fi
@@ -149,26 +179,25 @@ else
fi fi
# -------------------------------------------------- # --------------------------------------------------
# Symlinks vorbereiten # ISO Symlink
# -------------------------------------------------- # --------------------------------------------------
echo echo
echo "Setze persistente Verzeichnisse..." echo "Setze ISO-Symlink..."
# ISO
rm -rf "${TARGET}/iso" rm -rf "${TARGET}/iso"
ln -s "$ISO_DIR" "${TARGET}/iso" ln -s "$ISO_DIR" "${TARGET}/iso"
# Config # --------------------------------------------------
# Config Symlink
# --------------------------------------------------
if [ -f "$CONFIG_FILE" ]; then if [ -f "$CONFIG_FILE" ]; then
rm -f "${TARGET}/data/config.dat" echo "Setze Config-Symlink..."
ln -s \ rm -f "${TARGET}/data/config.dat"
"$CONFIG_FILE" \ ln -s "$CONFIG_FILE" "${TARGET}/data/config.dat"
"${TARGET}/data/config.dat"
fi fi
@@ -184,14 +213,9 @@ systemctl stop "$SERVICE" 2>/dev/null || true
sleep 2 sleep 2
# -------------------------------------------------- # --------------------------------------------------
# Bestehende /opt/iventoy Installation migrieren # Alte direkte Installation sichern
# -------------------------------------------------- # --------------------------------------------------
#
# Falls /opt/iventoy beim allerersten Lauf noch ein echtes
# Verzeichnis und kein Symlink ist.
#
if [ -e "$CURRENT" ] && [ ! -L "$CURRENT" ]; then if [ -e "$CURRENT" ] && [ ! -L "$CURRENT" ]; then
OLD="${BASE}/iventoy-old-$(date +%Y%m%d-%H%M%S)" OLD="${BASE}/iventoy-old-$(date +%Y%m%d-%H%M%S)"
@@ -215,7 +239,7 @@ ln -sfn "$TARGET" "${CURRENT}.new"
mv -Tf "${CURRENT}.new" "$CURRENT" mv -Tf "${CURRENT}.new" "$CURRENT"
# -------------------------------------------------- # --------------------------------------------------
# Start # Service starten
# -------------------------------------------------- # --------------------------------------------------
echo echo
@@ -246,19 +270,35 @@ if ! ss -lntH | awk '{print $4}' | grep -Eq '[:.]16000$'; then
FAILED=1 FAILED=1
fi fi
if ! ss -lnuH | awk '{print $4}' | grep -Eq '[:.]69$'; then
echo "ERROR: UDP 69 lauscht nicht."
FAILED=1
fi
if ! ss -lnuH | awk '{print $4}' | grep -Eq '[:.]4011$'; then
echo "ERROR: UDP 4011 lauscht nicht."
FAILED=1
fi
if ! ss -lnuH | awk '{print $4}' | grep -Eq '[:.]67$'; then
echo "ERROR: UDP 67 lauscht nicht."
FAILED=1
fi
if [ "$FAILED" -ne 0 ]; then if [ "$FAILED" -ne 0 ]; then
echo echo
echo "==========================================" echo "=========================================="
echo " UPDATE FEHLGESCHLAGEN" echo " UPDATE FEHLGESCHLAGEN"
echo "==========================================" echo "=========================================="
echo echo
echo "iVentoy Log:"
tail -n 40 "${CURRENT}/log/log.txt" || true if [ -f "${CURRENT}/log/log.txt" ]; then
echo "Letzte iVentoy Log-Einträge:"
tail -n 40 "${CURRENT}/log/log.txt" || true
fi
exit 1 exit 1
fi fi
# -------------------------------------------------- # --------------------------------------------------
@@ -284,3 +324,6 @@ echo
echo "ISO:" echo "ISO:"
echo " ${CURRENT}/iso -> $ISO_DIR" echo " ${CURRENT}/iso -> $ISO_DIR"
echo echo
echo "Config-Backups:"
echo " maximal $MAX_BACKUPS"
echo