Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | anwenderwiki:home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren [2011/11/04 11:53] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Home-URL reparieren ====== | ||
+ | Bei der jährlichen Versetzung oder einem Klassenwechsel während des Schuljahres verschiebt die paedML den Home-Ordner an eine andere Stelle((z.B. von / | ||
+ | |||
+ | Leider speichern einige Programme unter Linux den Pfad zum Home-Ordner in Konfigurationsdateien ab. Ein prominentes Beispiel ist KDE4, das in der Datei | ||
+ | '' | ||
+ | |||
+ | Abhilfe bietet das folgende kleine Skript. | ||
+ | |||
+ | Es sollte auf dem Server im Verzeichnis | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | gespeichert und immer nach einer Versetzung ausgeführt werden. | ||
+ | |||
+ | Es durchsucht alle Schülerordner nach Dateien die einen Verweis auf den alten Home-Ordner haben und ändert diesen durch einen Verweis auf den neuen Home-Ordner. | ||
+ | |||
+ | Es werden keine binären Dateien durchsucht und symbolische Links werden nicht durchsucht. | ||
+ | |||
+ | Zu Testzwecken kann man einen Benutzernamen als Parameter übergeben, um nur ein einziges | ||
+ | Benutzerverzeichnis bearbeiten zu lassen. | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | bearbeitet den Home-Ordner des Benutzers **gast**. | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | bearbeitet alle Home-Ordner der Schüler. Es werden nur Schülerordner bearbeitet, da nur bei diesen das Problem der Verschiebung auftritt. | ||
+ | |||
+ | ===== verschiebe-schueler_homeURL.sh ===== | ||
+ | < | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Gymnasium Himmelsthuer, | ||
+ | # In allen Konfigurationssdateien wird das Home-Verzeichnis | ||
+ | # von aklasse nach nklasse versetzt, | ||
+ | # falls beide unterschiedlich sind. | ||
+ | # | ||
+ | # Test: Sind wir root? | ||
+ | if [ $UID != 0 ]; then | ||
+ | echo "Das darf nur mit root-Rechten passieren!" | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | TMPFILE=`mktemp / | ||
+ | TMPFILEUSER=`mktemp / | ||
+ | |||
+ | DEBUG="" | ||
+ | |||
+ | move_homeURL(){ | ||
+ | if [ -d ${home} ]; then | ||
+ | SEARCH="/ | ||
+ | nklasse=`echo $home|cut -d\/ -f4` | ||
+ | REPLACE="/ | ||
+ | for DATEI in `find ${home} -type f -print0| xargs -0r grep -l -I " | ||
+ | [ -f " | ||
+ | aklasse=`grep -o -m 1 " | ||
+ | if [ ! " | ||
+ | echo " | ||
+ | sed -i " | ||
+ | fi | ||
+ | done; | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | # | ||
+ | if [ -z " | ||
+ | getent passwd > | ||
+ | else | ||
+ | getent passwd | grep " | ||
+ | fi | ||
+ | |||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | |||
+ | while IFS=: read user pass uid gid name home shell | ||
+ | do | ||
+ | # Ist es ein Schueler ? | ||
+ | GROUP=`id -gn $user`; | ||
+ | [ "" | ||
+ | [ "" | ||
+ | [ " | ||
+ | [ " | ||
+ | [ " | ||
+ | move_homeURL $user | ||
+ | done < | ||
+ | |||
+ | rm -f $TMPFILE | ||
+ | rm -f $TMPFILEUSER | ||
+ | </ | ||