summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authorSimon Rettberg2013-09-06 15:18:35 +0200
committerJonathan Bauer2013-09-30 13:22:04 +0200
commitc344de73f403d8ed04abbe976019ec03dd9c9d73 (patch)
treee0c441729b36b7ba6b1433255d70f7518a14821d /data
parent[dnbd3] Remove invalid parameter from service file (diff)
downloadtm-scripts-c344de73f403d8ed04abbe976019ec03dd9c9d73.tar.gz
tm-scripts-c344de73f403d8ed04abbe976019ec03dd9c9d73.tar.xz
tm-scripts-c344de73f403d8ed04abbe976019ec03dd9c9d73.zip
[DEMOSERVER] Update install and update script
- Check for updated scripts first, then update minilinux - Add defaults for NTP - Create pxe menuconfig in new format (config.tgz & addon support) - Minor tweaks and refactoring
Diffstat (limited to 'data')
-rwxr-xr-xdata/openslx-install2
-rwxr-xr-xdata/openslx-update182
2 files changed, 103 insertions, 81 deletions
diff --git a/data/openslx-install b/data/openslx-install
index b712aa3e..d511e88d 100755
--- a/data/openslx-install
+++ b/data/openslx-install
@@ -293,6 +293,8 @@ else # external NFS Server for VM Images is used. Disable NFS + Samba
fi
print "Dienste konfiguriert."
+[ ! -e "/srv/openslx/www/config.tgz" ] && openslx-settings
+
#
# ---- Create boottime system config ----
#
diff --git a/data/openslx-update b/data/openslx-update
index cb46b258..10ee3d7e 100755
--- a/data/openslx-update
+++ b/data/openslx-update
@@ -1,6 +1,6 @@
#!/bin/bash
-### Funktionen ###################################
+### Functions ###################################
function print ()
{
@@ -17,42 +17,104 @@ function warning ()
{
echo -e "\033[01;33m$@\033[00m"
}
+
+function download ()
+{
+ [ $# -ne 2 ] && error "Script-Fehler: download <destname> <url> (2 Params, habe $#!)"
+ # Download
+ wget -nv -O "$WWWDIR/$1" "$2" && DLFLAG=1 || { warning "Download von $2 fehlgeschlagen"; return 1; }
+ # Download md5 value
+ wget -nv -O "$WWWTEMP/$1.$CRCEXTENSION" "$2.$CRCEXTENSION" || { warning "Download von $2.$CRCEXTENSION fehlgeschlagen. Kann Dateiintegrität nicht prüfen."; return 0; }
+ # Check file checksums
+ if [ "$($CRCCOMMAND "$WWWDIR/$1" | cut -f 1 -d " ")" != "$(cat "$WWWTEMP/$1.$CRCEXTENSION")" ]; then
+ warning "$CRCCOMMAND: $WWWDIR/$1: Prüfsummendiskrepanz! Übertragungsfehler oder Laufwerk voll."
+ error "Beende Skript aufgrund Prüfsummendiskrepanz!"
+ else
+ print "Prüfsummencheck Datei $1 ok."
+ fi
+ return 0
+}
-### Variablen ###################################
+### Constants ###################################
# Web
MIRROR="http://mltk.boot.openslx.org"
MIRRORDIR="files"
-# Dateien und Verzeichnisse
+# Files/Dirs
PXEDIR="/srv/openslx/tftp/pxelinux.cfg"
PXECONFIG="$PXEDIR/default"
PXETEMPLATE="/opt/openslx/templates/pxemenu-header"
-FILEPRAEFIX="openslx-"
+FILEPREFIX="openslx-"
WWWDIR="/srv/openslx/www"
-SLXSCRIPTS="openslx-install openslx-update"
SCRIPTPATH=$(dirname "$0")
-SCRIPTBACKUPDIR=/root/backup
-# Konfigurationsdateien
+SCRIPTBACKUPDIR="/root/backup"
SERVERDEFAULTS="/opt/openslx/server-defaults"
-# Temporäres
+LOCALINDEX="/opt/openslx/local_version"
+WWWTEMP="/srv/openslx/www-temp"
+# Other
+SLXSCRIPTS="openslx-install openslx-update"
+NOW=$(date +%Y%m%d)
+# Temporary
REMOTEINDEX=$(mktemp /tmp/mlversionXXX)
LOCALINDEX="/opt/openslx/local_version"
WWWTEMP="/srv/openslx/www-temp"
+# Checksumming
+CRCCOMMAND=md5sum
+CRCEXTENSION=md5
+CRCLEN=32
+# Minimum free disk space
+MINSPACE=409600 # 400MiB
+### Variables ##################################
DLFLAG=0 # if something was downloaded
-# 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
-# Allgemein
-DATUM=$(date +%Y%m%d)
-trap "{ rm -f $REMOTEINDEX $WWWTEMP/* $WWWDIR/*.$CRCEXTENSION; }" SIGINT SIGTERM EXIT
+trap "{ rm -f \"$REMOTEINDEX\" \"$WWWTEMP\"/* \"$WWWDIR\"/*.\"$CRCEXTENSION\"; }" SIGINT SIGTERM EXIT
-# 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
+mkdir -p "$WWWTEMP"
+
+# 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
+print "Prüfe auf neue openslx-ng Script-Versionen..."
+SLXCHANGED=no
+for FILE in $SLXSCRIPTS; do
+ if ! wget -nv -O "$WWWTEMP/$FILE.$CRCEXTENSION" "$MIRROR/$MIRRORDIR/$FILE.$CRCEXTENSION"; then
+ warning "Fehler bei Update-Prüfung für $FILE"
+ continue
+ fi
+ CRCVALNEW=$(cat "$WWWTEMP/$FILE.$CRCEXTENSION" | cut -f 1 -d " " | tr '[A-Z]' '[a-z]')
+ CRCVALOLD=$($CRCCOMMAND "$SCRIPTPATH/$FILE" | cut -f 1 -d " " | tr '[A-Z]' '[a-z]')
+ if [ "${#CRCVALNEW}" -ne "$CRCLEN" ]; then
+ warning "Fehler beim herunterladen der Prüfsumme von $FILE - erwartewte Länge $CRCLEN, tatsächliche Länge ${#CRCVALNEW}"
+ continue
+ fi
+ if [ "$CRCVALNEW" == "$CRCVALOLD" ]; then
+ print "$SCRIPTPATH/$FILE - kein Update notwendig."
+ continue
+ fi
+ wget -nv -O "$WWWTEMP/$FILE" "$MIRROR/$MIRRORDIR/$FILE"
+ if [ "$($CRCCOMMAND "$WWWTEMP/$FILE" | cut -f 1 -d " " | tr '[A-Z]' '[a-z]')" != "$CRCVALNEW" ]; then
+ warning "$SCRIPTPATH/$FILE konnte nicht upgedatet werden ($CRCEXTENSION-Fehler)!"
+ continue
+ fi
+ print "$SCRIPTPATH/$FILE wird upgedatet - $CRCEXTENSION ok."
+ print "Alte Version $SCRIPTPATH/$FILE gesichert nach: $SCRIPTBACKUPDIR/$FILE.$NOW."
+ mv "$SCRIPTPATH/$FILE" "$SCRIPTBACKUPDIR/$FILE.$NOW"
+ chmod u+x "$WWWTEMP/$FILE" # wget doesn't set exec :)
+ mv "$WWWTEMP/$FILE" "$SCRIPTPATH"
+ SLXCHANGED=yes
+done
+if [ "$SLXCHANGED" == "yes" ]; then
+ print "OpenSLX-Scripte aktualisiert. Starte neu..."
+ $0 $@
+ RET=$?
+ exit $RET
+fi
+
+# Warn if there's not enough space left...
+if [ "$(df -Pk "$WWWDIR" | tail -1 | tr -s ' ' | cut -d " " -f 4)" -lt "$MINSPACE" ]; then
warning "Achtung: Eventuell zu wenig freier Speicherplatz verfügbar."
fi
@@ -64,7 +126,7 @@ fi
print ""
print "Lade Liste aktuell verfügbarer Versionen..."
-wget -O "$REMOTEINDEX" "$MIRROR/index" || error "Konnte Liste verfügbarer Releases nicht herunterladen."
+wget -nv -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
@@ -72,10 +134,7 @@ wget -O "$REMOTEINDEX" "$MIRROR/index" || error "Konnte Liste verfügbarer Relea
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!"
+mv "$WWWDIR/$FILEPREFIX"* "$WWWTEMP/"
for REL in ${!AVAILABLE_*}; do
BRANCH="${REL#AVAILABLE_}"
@@ -85,35 +144,25 @@ for REL in ${!AVAILABLE_*}; do
for FILE in ${!REL}; do
# Handle pxelinux.cfg
if [[ "$FILE" == kernel* ]]; then
- KERNEL="KERNEL http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE"
+ KERNEL="KERNEL http://$SLX_LOCAL_ADDR/$FILEPREFIX$FILE"
else
if [ -z "$PXELINE" ]; then
PXELINE="INITRD "
else
PXELINE+=","
fi
- PXELINE+="http://$SLX_LOCAL_ADDR/$FILEPRAEFIX$FILE"
+ PXELINE+="http://$SLX_LOCAL_ADDR/$FILEPREFIX$FILE"
fi
# If file is available locally, don't download again
- if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then
- continue
+ if [ -s "$WWWTEMP/$FILEPREFIX$FILE" ]; then
+ mv "$WWWTEMP/$FILEPREFIX$FILE" "$WWWDIR/" && continue
+ warning "Konnte bestehende Datei $WWWTEMP/$FILEPREFIX$FILE nicht nach $WWWDIR/ verschieben, lade erneut herunter..."
fi
# Download
- 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; }
- # check file checksums
- 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üfsummencheck Datei $FILE ok."
- fi
+ download "$FILEPREFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE"
done
if [ -z "$PXELINE" -o -z "$KERNEL" ]; then
- warning "Incomplete entry. KERNEL or INITRD missing."
+ warning "Unvollständiger Eintrag. KERNEL oder INITRD fehlen."
continue
fi
# Append to pxeconfig
@@ -123,57 +172,28 @@ for REL in ${!AVAILABLE_*}; do
echo " $KERNEL" >> "$PXECONFIG"
echo " $PXELINE" >> "$PXECONFIG"
echo " IPAPPEND 3" >> "$PXECONFIG"
- echo " APPEND slxconfig=http://$SLX_LOCAL_ADDR/config" >> "$PXECONFIG"
- # Extra files (e.g. vmplayer in it's own sqfs that gets downloaded later)
+ echo " APPEND slxsrv=$SLX_LOCAL_ADDR slxbase=/" >> "$PXECONFIG"
+ # Extra files (e.g. vmplayer in its own sqfs that gets downloaded later)
EXTRA="${BRANCH}_EXTRA"
for FILE in ${!EXTRA}; do
# If file is available locally, don't download again
- if [ -s "$WWWTEMP/$FILEPRAEFIX$FILE" ]; then
- # mv "$WWWTEMP/$FILEPRAEFIX$FILE" "$WWWDIR/"
- continue
+ if [ -s "$WWWTEMP/$FILEPREFIX$FILE" ]; then
+ mv "$WWWTEMP/$FILEPREFIX$FILE" "$WWWDIR/" && continue
+ warning "Konnte bestehende Datei $WWWTEMP/$FILEPREFIX$FILE nicht nach $WWWDIR/ verschieben, lade erneut herunter..."
fi
# Download
- wget -O "$WWWTEMP/$FILEPRAEFIX$FILE" "$MIRROR/$MIRRORDIR/$FILE" || warning "Could not download $FILE"
+ download "$FILEPREFIX$FILE" "$MIRROR/$MIRRORDIR/$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.
if [ "$DLFLAG" -ne 0 ]; then
- print "Alles scheint ok - Bewege neue Abbilder zum Webserver."
- mv "$WWWTEMP/"* "$WWWDIR/"
- print "Neue Abbilder bewegt."
+ print "Alles scheint ok."
else
- print "Keine Abbilder heruntergeladen - leere temporäres Verzeichnis $WWWTEMP."
- rm -f "$WWWTEMP/"*
+ print "Keine neuen Abbilder heruntergeladen."
fi
+rm -f "$WWWTEMP/"*
+
+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 $SLXSCRIPTS; 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