Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren]] 

Home-URL reparieren

Bei der jährlichen Versetzung oder einem Klassenwechsel während des Schuljahres verschiebt die paedML den Home-Ordner an eine andere Stelle1).

Leider speichern einige Programme unter Linux den Pfad zum Home-Ordner in Konfigurationsdateien ab. Ein prominentes Beispiel ist KDE4, das in der Datei .kde4/share/apps/kfileplaces/bookmarks.xml relativ zum Home-Ordner diesen Pfad speichert. Als Folge davon funktioniert nach einer Versetzung im KDE-Programm dolphin der Ort Home-Ordner nicht mehr.

Abhilfe bietet das folgende kleine Skript.

Es sollte auf dem Server im Verzeichnis

/usr/local/bin

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.

/usr/local/bin/verschiebe-schueler_homeURL.sh gast

bearbeitet den Home-Ordner des Benutzers gast.

/usr/local/bin/verschiebe-schueler_homeURL.sh

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, fschuett 2011
# 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 /tmp/move_homeURL.XXXXXX`
TMPFILEUSER=`mktemp /tmp/move_homeURL.XXXXXX`

DEBUG=""

move_homeURL(){
if [ -d ${home} ]; then
    SEARCH="/home/students/\([^/]*\)/${user}"
    nklasse=`echo $home|cut -d\/ -f4`
    REPLACE="/home/students/${nklasse}/${user}"
    for DATEI in `find ${home} -type f -print0| xargs -0r grep -l -I "${SEARCH}"`; do
        [ -f "$DATEI" ] || continue;
        aklasse=`grep -o -m 1 "${SEARCH}" "$DATEI"|head -n 1|cut -d\/ -f4`
        if [ ! "${aklasse}" = "${nklasse}" ]; then
            echo "Schüler ${user}: ${aklasse} -> ${nklasse} in Datei $DATEI"
            sed -i "s#${SEARCH}#${REPLACE}#g" "$DATEI"
        fi
    done;
fi
}

#Arbeitsversion mit allen Schuelern
if [ -z "$1" ]; then
    getent passwd >$TMPFILEUSER
else
    getent passwd | grep "^$1" >$TMPFILEUSER
fi

echo "Verschiebung von Schülern"
echo "======================="
echo "Änderung der Pfade in Konfigurationsdateien auf die URL der neuen Klasse."
echo "-------------------------------------------------------------------------"

while IFS=: read user pass uid gid name home shell
do
    # Ist es ein Schueler ?
    GROUP=`id -gn $user`;
    [ "" != "`echo $home | grep students`" ] && GROUP=students;
    [ "" != "`echo $home | grep null`" ] && continue;
    [ "$name" = "ExamAccount" ] && GROUP=examaccount;
    [ "$GROUP" != "students" ] && continue;
    [ "$home" = "/dev/null" ] && continue;
    move_homeURL $user
done <$TMPFILEUSER;

rm -f $TMPFILE
rm -f $TMPFILEUSER
1)
z.B. von /home/students/7a nach /home/students/8a
 [[anwenderwiki:home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren]] anwenderwiki/home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren.txt · Zuletzt geändert: 2011/11/04 10:53 (Externe Bearbeitung)