From 078c056e6d114a36c13e2d341242886f9ab6ea61 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Mon, 5 Aug 2013 17:32:58 +0200 Subject: [openslx-update] Added update for scripts openslx-install, openslx-update, new version detection by md5, incl. check for md5 after download to detect transport errors, disk full etc. --- data/openslx-update | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 8 deletions(-) (limited to 'data') diff --git a/data/openslx-update b/data/openslx-update index c7e24d30..9eecf749 100755 --- a/data/openslx-update +++ b/data/openslx-update @@ -17,7 +17,7 @@ function warning () { echo -e "\033[01;33m$@\033[00m" } - + ### Variablen ################################### # Web MIRROR="http://mltk.boot.openslx.org" @@ -28,12 +28,16 @@ PXECONFIG="$PXEDIR/default" PXETEMPLATE="/opt/openslx/templates/pxemenu-header" FILEPRAEFIX="openslx-" WWWDIR="/srv/openslx/www" +SLXSCRIPTS="openslx-install openslx-update" +SCRIPTPATH=$(dirname "$0") +SCRIPTBACKUPDIR=/root/backup # Konfigurationsdateien SERVERDEFAULTS="/opt/openslx/server-defaults" # Temporäres REMOTEINDEX="/tmp/mlversion" LOCALINDEX="/opt/openslx/local_version" WWWTEMP="/srv/openslx/www-temp" +DLFLAG=0 # if something was downloaded # Vars zum Überladen LOCAL_STABLE=0 LOCAL_TESTING=0 @@ -42,6 +46,8 @@ CRCCOMMAND=md5sum CRCEXTENSION=md5 # Mindestens freier Plattenplatz in Kilobytes MINSPACE=409600 # 400MB +# Allgemein +DATUM=$(date +%Y%m%d) trap "{ rm -f $REMOTEINDEX $WWWTEMP/* $WWWDIR/*.$CRCEXTENSION; }" SIGINT SIGTERM EXIT @@ -67,6 +73,7 @@ cp "$PXETEMPLATE" "$PXECONFIG" ERR=$?; [ $ERR -ne 0 ] && error "Kann PXE-Vorlage nicht umkopieren!" mkdir -p "$WWWTEMP" +print "Kopiere bestehende Dateien sicherheitshalber um..." cp -p "$WWWDIR/$FILEPRAEFIX"* "$WWWTEMP/" ERR=$?; [ $ERR -ne 0 ] && error "Kann bestehende Dateien nicht nach $WWWTEMP kopieren!" @@ -92,7 +99,7 @@ for REL in ${!AVAILABLE_*}; do continue fi # Download - wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || { warning "Could not download $FILE"; continue; } + wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" && DLFLAG=1 || { warning "Could not download $FILE"; continue; } # Download md5 value wget -O "$WWWTEMP/$FILEPRAEFIX$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION" \ || { warning "Could not download $FILE.$CRCEXTENSION!"; continue; } @@ -133,10 +140,40 @@ 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" +if [ "$DLFLAG" -ne 0 ]; then + print "Alles scheint ok - Bewege neue Abbilder zum Webserver." + mv "$WWWTEMP/"* "$WWWDIR/" + print "Neue Abbilder bewegt." +else + print "Keine Abbilder heruntergeladen - leere temporäres Verzeichnis $WWWTEMP." + rm -f "$WWWTEMP/"* +fi -exit 0 +# Update Scripts openslx-install and openslx-update, if possible. +if [ ! -d "$SCRIPTBACKUPDIR" ]; then + print "Erzeuge Sicherungsverzeichnis für Skripte $SCRIPTBACKUPDIR" + mkdir -p "$SCRIPTBACKUPDIR" || error "Kann Sicherungsverzeichnis für Skripte nicht erstellen!" +fi + +for FILE in openslx-update openslx-install; do + wget -O "$WWWTEMP/$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION" + CRCVALNEW=$(cat "$WWWTEMP/$FILE.$CRCEXTENSION"|cut -f 1 -d " ") + CRCVALOLD=$($CRCCOMMAND "$SCRIPTPATH/$FILE"|cut -f 1 -d " ") + if [ "$CRCVALNEW" == "$CRCVALOLD" ]; then + print "$SCRIPTPATH/$FILE - kein Update notwendig." + continue + else + wget -O "$WWWTEMP/$FILE" "$MIRROR/$MIRRORDIR/$FILE" + if [ $($CRCCOMMAND "$WWWTEMP/$FILE"|cut -f 1 -d " ") != "$CRCVALNEW" ]; then + warning "$SCRIPTPATH/$FILE konnte nicht upgedatet werden ($CRCEXTENSION-Fehler)!" + continue + else + print "$SCRIPTPATH/$FILE wird upgedatet - $CRCEXTENSION ok." + print "Alte Version $SCRIPTPATH/$FILE gesichert nach: $SCRIPTBACKUPDIR/$FILE.$DATUM." + mv "$SCRIPTPATH/$FILE" "$SCRIPTBACKUPDIR/$FILE.$DATUM" + chmod u+x "$WWWTEMP/$FILE" # sonst wg. wget keine exec-bit + mv "$WWWTEMP/$FILE" "$SCRIPTPATH" + fi + fi +done +exit 0 -- cgit v1.2.3-55-g7522