Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

anwenderwiki:home_url_in_konfigurationsdateien_nach_klassenwechsel_reparieren [2011/11/04 10:53] (aktuell)
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 /​home/​students/​7a nach /​home/​students/​8a)).
 +
 +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
 +<​code>​
 +/​usr/​local/​bin
 +</​code>​
 +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.
 +
 +<​code>​
 +/​usr/​local/​bin/​verschiebe-schueler_homeURL.sh gast
 +</​code>​
 +bearbeitet den Home-Ordner des Benutzers **gast**.
 +
 +<​code>​
 +/​usr/​local/​bin/​verschiebe-schueler_homeURL.sh
 +</​code>​
 +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 =====
 +<​code>​
 +#!/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
 +</​code>​
  
 [[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)