Files
schul-laptops/files/reimage-check.sh

38 lines
1.2 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
#
# Prueft beim Boot, ob die Image-Platte (DEZNTRSICHERUNG) angeschlossen ist
# und ein neueres Image traegt als das installierte. Wenn ja: einmaliger
# Reboot in den GRUB-Eintrag "Schul-Neuinstallation" (Clonezilla, toram).
#
# Sicherungen gegen Fehlausloesung:
# - laptop03 (Master) bespielt sich nie selbst (E-004)
# - Versionsvergleich verhindert Reimage-Schleifen bei steckender Platte
#
set -u
LABEL="DEZNTRSICHERUNG"
VERSION_FILE="/etc/schul-image-version"
GRUB_ENTRY="Schul-Neuinstallation"
# Der Master ist tabu — doppelte Absicherung zusaetzlich zum deaktivierten Service
[ "$(hostname)" = "laptop03" ] && exit 0
DEV=$(blkid -L "$LABEL" 2>/dev/null) || exit 0
[ -n "$DEV" ] || exit 0
MNT=$(mktemp -d)
mount -o ro "$DEV" "$MNT" 2>/dev/null || { rmdir "$MNT"; exit 0; }
NEWEST=$(find "$MNT" -maxdepth 1 -name 'schule-laptop-*' -type d -printf '%f\n' 2>/dev/null | sort | tail -1)
umount "$MNT"
rmdir "$MNT"
[ -n "$NEWEST" ] || exit 0
INSTALLED=$(cat "$VERSION_FILE" 2>/dev/null || echo "0")
if [ "$NEWEST" \> "$INSTALLED" ]; then
echo "Neues Image '$NEWEST' gefunden (installiert: '$INSTALLED') — Neuinstallation beim naechsten Boot."
grub-reboot "$GRUB_ENTRY" && systemctl reboot
fi
exit 0