summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authorChristian Rößler2013-08-05 17:32:58 +0200
committerChristian Rößler2013-08-05 17:32:58 +0200
commit078c056e6d114a36c13e2d341242886f9ab6ea61 (patch)
treee0ba0eb068bbf46e6796cc74dc2e30bb76e5a116 /data
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-078c056e6d114a36c13e2d341242886f9ab6ea61.tar.gz
tm-scripts-078c056e6d114a36c13e2d341242886f9ab6ea61.tar.xz
tm-scripts-078c056e6d114a36c13e2d341242886f9ab6ea61.zip
[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.
Diffstat (limited to 'data')
-rwxr-xr-xdata/openslx-update53
1 files changed, 45 insertions, 8 deletions
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