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 | ||
| + | </ | ||