summaryrefslogtreecommitdiffstats
path: root/data/openslx-update
diff options
context:
space:
mode:
authorChristian Rößler2013-07-31 18:28:53 +0200
committerChristian Rößler2013-07-31 18:28:53 +0200
commit8f1f5acc3f14b3c96ef2fd62c8f1549064b8b91e (patch)
tree9e1a1b35351df4bb261b6ee7a5c0589c9b576488 /data/openslx-update
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-8f1f5acc3f14b3c96ef2fd62c8f1549064b8b91e.tar.gz
tm-scripts-8f1f5acc3f14b3c96ef2fd62c8f1549064b8b91e.tar.xz
tm-scripts-8f1f5acc3f14b3c96ef2fd62c8f1549064b8b91e.zip
Reorganized: Script more robust (disk full or such will not break
bootable system), warning if disk space presumed to be too low, traps for cleanup (exit, int term), paths and files eg. variabilized etc.
Diffstat (limited to 'data/openslx-update')
-rwxr-xr-xdata/openslx-update74
1 files changed, 53 insertions, 21 deletions
diff --git a/data/openslx-update b/data/openslx-update
index e4d271f5..c7e24d30 100755
--- a/data/openslx-update
+++ b/data/openslx-update
@@ -1,5 +1,7 @@
#!/bin/bash
+### Funktionen ###################################
+
function print ()
{
echo -e "\033[01;29m$@\033[00m"
@@ -16,34 +18,58 @@ function warning ()
echo -e "\033[01;33m$@\033[00m"
}
+### Variablen ###################################
+# Web
MIRROR="http://mltk.boot.openslx.org"
+MIRRORDIR="files"
+# Dateien und Verzeichnisse
+PXEDIR="/srv/openslx/tftp/pxelinux.cfg"
+PXECONFIG="$PXEDIR/default"
+PXETEMPLATE="/opt/openslx/templates/pxemenu-header"
+FILEPRAEFIX="openslx-"
+WWWDIR="/srv/openslx/www"
+# Konfigurationsdateien
+SERVERDEFAULTS="/opt/openslx/server-defaults"
+# Temporäres
REMOTEINDEX="/tmp/mlversion"
LOCALINDEX="/opt/openslx/local_version"
WWWTEMP="/srv/openslx/www-temp"
-PXECONFIG="/srv/openslx/tftp/pxelinux.cfg/default"
+# Vars zum Überladen
+LOCAL_STABLE=0
+LOCAL_TESTING=0
+# Vars für Prüfsummen
CRCCOMMAND=md5sum
CRCEXTENSION=md5
+# Mindestens freier Plattenplatz in Kilobytes
+MINSPACE=409600 # 400MB
-. "/opt/openslx/server-defaults" || error "Konnte Serverkonfiguration nicht laden. Wurde openslx-install ausgeführt?"
+trap "{ rm -f $REMOTEINDEX $WWWTEMP/* $WWWDIR/*.$CRCEXTENSION; }" SIGINT SIGTERM EXIT
-LOCAL_STABLE=0
-LOCAL_TESTING=0
+# Warnung ausgeben, wenn Raum für $WWWTEMP eventuell zu klein
+if [ $(df -Pk $WWWTEMP|tail -1| tr -s ' '|cut -d " " -f 4) -lt $MINSPACE ]; then
+ warning "Achtung: Eventuell zu wenig freier Speicherplatz verfügbar."
+fi
+
+
+. "$SERVERDEFAULTS" || error "Konnte Serverkonfiguration nicht laden. Wurde openslx-install ausgeführt?"
if [ -s "$LOCALINDEX" ]; then
. "$LOCALINDEX" || error "Fehler beim laden der lokalen Versionsinfirmationen aus $LOCALINDEX"
fi
print ""
print "Lade Liste aktuell verfügbarer Versionen..."
-rm -f "$REMOTEINDEX"
wget -O "$REMOTEINDEX" "$MIRROR/index" || error "Konnte Liste verfügbarer Releases nicht herunterladen."
. "$REMOTEINDEX" || error "Liste verfügbarer Releases Fehlerhaft (konnte $REMOTEINDEX nicht sourcen)"
# Regenerate pxemenu
-mkdir -p "/srv/openslx/tftp/pxelinux.cfg"
-cp "/opt/openslx/templates/pxemenu-header" "$PXECONFIG"
+[ -d "$PXEDIR" ] || mkdir -p "$PXEDIR"
+cp "$PXETEMPLATE" "$PXECONFIG"
+ERR=$?; [ $ERR -ne 0 ] && error "Kann PXE-Vorlage nicht umkopieren!"
mkdir -p "$WWWTEMP"
-mv /srv/openslx/www/openslx-* "$WWWTEMP/"
+cp -p "$WWWDIR/$FILEPRAEFIX"* "$WWWTEMP/"
+ERR=$?; [ $ERR -ne 0 ] && error "Kann bestehende Dateien nicht nach $WWWTEMP kopieren!"
+
for REL in ${!AVAILABLE_*}; do
BRANCH="${REL#AVAILABLE_}"
print "Remote has branch $BRANCH"
@@ -52,32 +78,31 @@ for REL in ${!AVAILABLE_*}; do
for FILE in ${!REL}; do
# Handle pxelinux.cfg
if [[ "$FILE" == kernel* ]]; then
- KERNEL="KERNEL http://$SLX_LOCAL_ADDR/openslx-$FILE"
+ KERNEL="KERNEL http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE"
else
if [ -z "$PXELINE" ]; then
PXELINE="INITRD "
else
PXELINE+=","
fi
- PXELINE+="http://$SLX_LOCAL_ADDR/openslx-$FILE"
+ PXELINE+="http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE"
fi
# If file is available locally, don't download again
- if [ -s "$WWWTEMP/openslx-$FILE" ]; then
- mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/"
+ if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then
continue
fi
# Download
- wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || { warning "Could not download $FILE"; continue; }
+ wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || { warning "Could not download $FILE"; continue; }
# Download md5 value
- wget -O "/srv/openslx/www/openslx-$FILE.$CRCEXTENSION" "$MIRROR/files/$FILE.$CRCEXTENSION" \
+ wget -O "$WWWTEMP/$FILEPRAEFIX$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION" \
|| { warning "Could not download $FILE.$CRCEXTENSION!"; continue; }
# check file checksums
- if [ $($CRCCOMMAND "/srv/openslx/www/openslx-$FILE"|cut -f 1 -d " ") != "$(cat /srv/openslx/www/openslx-$FILE.$CRCEXTENSION)" ]; then
+ if [ $($CRCCOMMAND "$WWWTEMP/$FILEPRAEFIX$FILE"|cut -f 1 -d " ") != "$(cat $WWWTEMP/$FILEPRAEFIX$FILE.$CRCEXTENSION)" ]; then
warning "$CRCCOMMAND: $FILE: checksum mismatch! Transmission error or disk full."
warning "$CRCCOMMAND: $FILE: Prüfsummendiskrepanz! Übertragungsfehler oder Laufwerk voll."
error "Beende Skript aufgrund Prüfsummendiskrepanz!"
else
- print "Prüsummencheck Datei $FILE ok."
+ print "Prüfsummencheck Datei $FILE ok."
fi
done
if [ -z "$PXELINE" -o -z "$KERNEL" ]; then
@@ -96,15 +121,22 @@ for REL in ${!AVAILABLE_*}; do
EXTRA="${BRANCH}_EXTRA"
for FILE in ${!EXTRA}; do
# If file is available locally, don't download again
- if [ -s "$WWWTEMP/openslx-$FILE" ]; then
- mv "$WWWTEMP/openslx-$FILE" "/srv/openslx/www/"
+ if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then
+ # mv "$WWWTEMP/$FILEPRAEFIX$FILE" "$WWWDIR/"
continue
fi
# Download
- wget -O "/srv/openslx/www/openslx-$FILE" "$MIRROR/files/$FILE" || warning "Could not download $FILE"
+ wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || warning "Could not download $FILE"
done
done
+
+# If we are here, then we can assume everything went either right, or at least no fatal error happened.
+# So, we will move the stuff in $WWWTEMP to $WWWDIR.
+
+print "Alles scheint ok - Bewege neue Abbilder zum Webserver."
+mv "$WWWTEMP/"* "$WWWDIR/"
print "Done."
-print "Old files left over:"
-ls -alh "$WWWTEMP"
+# print "Old files left over:"
+# ls -alh "$WWWTEMP"
+exit 0