diff options
author | Simon Rettberg | 2013-05-22 20:21:31 +0200 |
---|---|---|
committer | Simon Rettberg | 2013-05-22 20:21:31 +0200 |
commit | 3c194329504fb4fd0b6874f94a404d4f167a0d6d (patch) | |
tree | fca5654ff69b3ba2e3166c5f5f4d6abf6a9b3968 /data | |
parent | [setup_target] Fix for loop that unsets module-variables (diff) | |
download | tm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.tar.gz tm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.tar.xz tm-scripts-3c194329504fb4fd0b6874f94a404d4f167a0d6d.zip |
update to setup script
Diffstat (limited to 'data')
-rwxr-xr-x | data/openslx-ng-install | 88 |
1 files changed, 84 insertions, 4 deletions
diff --git a/data/openslx-ng-install b/data/openslx-ng-install index 45b5c337..0e71684e 100755 --- a/data/openslx-ng-install +++ b/data/openslx-ng-install @@ -53,6 +53,18 @@ function save_defaults () done } +function check_password () +{ + [ $# -lt 1 ] && error "No user given to check_password" + [ $# -lt 2 ] && error "No password given to check_password" + [ ! -r /etc/shadow ] && return 1 + local correct=$(< /etc/shadow awk -v "user=$1" -F : 'user == $1 {print $2}') + local prefix=${correct%"${correct#\$*\$*\$}"} + local supplied="$(perl -e "print crypt('$2', '$prefix')")" # el cheapo: do not pass a password containing a single quote ( ' ) + [ "x$supplied" = "x$correct" ] && return 0 + return 1 +} + # Load "Factory defaults" first FACTORY_DEFAULTS_FILE="/opt/openslx/server-factory-defaults" if [ -s "$FACTORY_DEFAULTS_FILE" ]; then @@ -77,8 +89,29 @@ print "einige Fragen beantwortet werden." print "" # +# ---- Ask if the private key of Uni Freiburg should be accepted for root logins +# +if [ ! -s "/root/.ssh/authorized_keys" ] || ! grep "openslx-admin@uni-freiburg.de" "/root/.ssh/authorized_keys" > /dev/null; then + print "" + print "Soll der Private Key der bwLehrpool-Abteilung in Freiburg für root-Logins auf" + print "diesem Server zugelassen werden? Dadurch ist es für die Entwickler aus Freiburg" + print "möglich, sich ohne Kenntnis des Passworts als root auf diesem Server einzuloggen." + if yesno "Dies vereinfacht die Fernwartung, Fehlerdiagnose und -behebung."; then + if mkdir -p "/root/.ssh" \ + && chmod 0700 "/root/.ssh" \ + && echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC667v6bIksFcwE6DMFs65ySfjySSn9V44GoN7qzIOUok/fgOsiotq2HJby/cgQxGVKogVmGUDRUqK3lKSqYnDmEigP3aQdleP1NFx6ex/zhEUoHp4VfqfQncSZT1zYE5IGQ9YNERrsDEI0YOZ5Cr+/I3p0bJAbXZM9dk/1Y6VOyMt1ZHXam5VvC6EJnJQzW9uAS69JSezprRsDYH+3NGd/XV/INkOsPIvkLc8rp5rtcdHrq/7NPNqtTCUdChv5F5lNMMHyXlhaM9FjG/DOZ0teKzh8MMe3oUXg/VibqEPZK4zVBKypATlWdv6zODiMrbi4n/Vm9IMA5i/71NW2GOdH openslx-admin@uni-freiburg.de" >> "/root/.ssh/authorized_keys" \ + && chmod 0600 "/root/.ssh/authorized_keys"; then + print "Key erfolgreich hinzugefügt" + else + error "Fehler beim Hinzufügen des Keys!" + fi + fi +fi + +# # ---- Haupt-Adresse (zwecks iPXE) ---- # +print "" print "Zum Einrichten der iPXE-Funktionalität muss die IP-Adresse des Servers" print "festgelegt werden. Alle Clients werden über diese Adresse bedient." print "WICHTIG: Sollte sich die Adresse des Servers ändern, muss dieses Setup" @@ -116,11 +149,58 @@ done # # ---- NFS Share # +# Is it a local one? +print "" +print "Bereitstellung der VMWare-Images" +print "Die Clients booten die VMWare-Images von einem NFS-Share. Dieser kann" +print "entweder auf diesem Server liegen, oder auf einem externen Server mit NFS-Zugang." +print "Sofern die Images von diesem Server ausgeliefert werden sollen, wird ein" +print "zusätzlicher SMB-Server installiert, um das Aufspielen neuer Images" +print "von einem Windows-PC aus zu erleichtern." + while true; do - getinput "Pfad zum NFS Share?" SLX_NFS_PATH - [[ "$RETVAL" == /* ]] && accept -done -print "Fertig. NFS_PATH ist $SLX_NFS_PATH" + getinput "Welches Setup ist erwünscht? L = Lokal, E = Extern" SLX_VM_NFS_TYPE + # Local Server + if [[ "$RETVAL" == L* || "$RETVAL" == l* ]]; then + while true; do + getinput "Lokaler Speicherort für VM-Images" SLX_VM_PATH + if [[ "$RETVAL" != /* ]]; then + print "FEHLER: Der Pfad muss absolut sein (mit einem / beginnen)" + continue + fi + mkdir -p "$RETVAL" + [ -w "$RETVAL" ] && accept + print "FEHLER: Verzeichnis '$RETVAL' nicht beschreibbar." + done + SLX_VM_NFS="$SLX_LOCAL_ADDR:$SLX_VM_PATH" + print "Lokaler VM-NFS-Share erreichbar unter $SLX_VM_NFS" + SLX_VM_NFS_TYPE=L + break # No accept here as it cannot be nested + fi + # External Server + if [[ "$RETVAL" == E* || "$RETVAL" == e* ]]; then + while true; do + getinput "Adresse und Pfad des externen NFS-Shares für VM-Images im Format Adresse:Pfad" SLX_VM_NFS + echo "$RETVAL" | grep -E '\S+:/\S+' && accept + print "FEHLER: Ungültiges NFS-Share-Format: $RETVAL" + done + print "Externer VM-NFS-Share erreichbar unter $SLX_VM_NFS" + SLX_VM_NFS_TYPE=E + break # No accept + fi + print "Ungültige Auswahl '$RETVAL'" +done # Done setting up VM NFS Server type + +# +# ---- Safety first: make user change root password if it is still the default ---- +# +if [ "x$1" != "x--test" ] && check_password "root" "openslx-ng"; then + print "" + print "Aus Sicherheitsgründen sollte das root-Passwort dieses Servers geändert werden." + while check_password "root" "openslx-ng" && yesno "Passwort jetzt ändern?"; do + passwd + done +fi SLX_LAST_INVOCATION="$(date)" save_defaults |