summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2013-07-31 19:05:32 +0200
committerJonathan Bauer2013-07-31 19:05:32 +0200
commit3b9eedd5c1785b3fedd98c0f9ab0f318337977a4 (patch)
tree3c75a0e36defc188611046da09f9900a73d804b0
parent[server] added new parameter for export target. Use: ./mltk server <ip> stage... (diff)
parentMerge branch 'master' of git.openslx.org:openslx-ng/tm-scripts (diff)
downloadtm-scripts-3b9eedd5c1785b3fedd98c0f9ab0f318337977a4.tar.gz
tm-scripts-3b9eedd5c1785b3fedd98c0f9ab0f318337977a4.tar.xz
tm-scripts-3b9eedd5c1785b3fedd98c0f9ab0f318337977a4.zip
Merge branch 'master' of git.openslx.org:openslx-ng/tm-scripts
-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