diff options
author | Christian Rößler | 2013-07-31 18:28:53 +0200 |
---|---|---|
committer | Christian Rößler | 2013-07-31 18:28:53 +0200 |
commit | 8f1f5acc3f14b3c96ef2fd62c8f1549064b8b91e (patch) | |
tree | 9e1a1b35351df4bb261b6ee7a5c0589c9b576488 /data/openslx-update | |
parent | Merge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff) | |
download | tm-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-x | data/openslx-update | 74 |
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 |