4. Verwaltung von Schulen über Importskripte#

UCS@school bietet für viele der regelmäßig wiederkehrenden Verwaltungsaufgaben spezielle UMC-Module und Assistenten an, die beim Anlegen, Modifizieren und Löschen von z.B. Schulen, Benutzerkonten und Rechnern unterstützen. Diese werden in Verwaltung von Schulen über die Univention Management Console beschrieben).

Ergänzend hierzu gibt es Programme für die Kommandozeile, die auch eine automatisierte Pflege der UCS@school-Umgebung zulassen und werden nachfolgend beschrieben.

Vorsicht

Seit der UCS@school-Version 3.2 R2 halten die kommandozeilenbasierten Importskripte zu Beginn des jeweiligen Imports den Univention Directory Notifier auf dem Primary Directory Node an. Nach Abschluss des Imports wird der Univention Directory Notifier wieder gestartet.

4.1. Pflege von Benutzerkonten für Schüler, Lehrer und Mitarbeiter#

Für UCS@school gibt es momentan mehrere Möglichkeiten Nutzer in das System zu importieren.

Die Konfiguration des kommandozeilenbasierten Benutzerimports ist in UCS@school - Handbuch zur CLI-Import-Schnittstelle [4] beschrieben.

4.2. Import von Schulklassen#

Beim Import schon Schulklassen ist zu beachten, dass die Klassennamen domänenweit eindeutig sein müssen. Das heißt, eine Klasse 1A kann nicht in mehreren OUs verwendet werden. Daher sollte jedem Klassennamen die OU und ein Bindestrich vorangestellt werden.

Bei der Erstellung von Klassen über das UMC-Modul Klassen (Schulen) geschieht dies automatisch. Sprechende Namen, wie zum Beispiel Igel oder BiologieAG, sind für Klassennamen ebenso möglich wie Buchstaben-Ziffern-Kombinationen (10R).

Beispiele für die Schule gym123:

gym123-1A
gym123-1B
gym123-2A
gym123-Igel

Der Import von Benutzern erfolgt über das Skript /usr/share/ucs-school-import/scripts/import_group, das auf dem Primary Directory Node als Benutzer root gestartet werden muss. Es erwartet den Namen einer CSV-Datei als ersten Parameter. Das Dateiformat für die Gruppen-Importdatei ist wie folgt aufgebaut:

Tab. 4.1 Aufbau der Datenzeilen für den Gruppen-Import#

Feld

Beschreibung

Mögliche Werte

Beispiel

Aktion

Art der Gruppenmodifikation

A=Hinzufügen, M=Modifizieren, D=Löschen

A

OU

OU, in der die Gruppe modifiziert werden soll

g123

Gruppenname

Der Name der Gruppe

g123m-1A

(Beschreibung)

Optionale Beschreibung der Gruppe

Klasse 1A

Ein Beispiel für eine Importdatei:

A     g123m     g123m-1A         Klaaassen 1A
A     g123m     g123m-LK-Inf     Leistungskurs Informatik
M     g123m     g123m-1A         Klasse 1A
D     g123m     g123m-LK-Inf     Leistungskurs Informatik
D     g123m     g123m-R12        Klasse R12

4.3. Vorgehen zum Schuljahreswechsel#

Zum Schuljahreswechsel stehen zahlreiche Änderungen in den Benutzerdaten an. Schüler werden in eine höhere Klasse versetzt, der Abschlussjahrgang verlässt die Schule und ein neuer Jahrgang wird eingeschult.

Ein Schuljahreswechsel erfolgt in vier Schritten:

  1. Eine Liste aller Schulabgänger wird aus der Schulverwaltungssoftware exportiert und die Konten werden über das Import-Skript entfernt (Aktion D, siehe Pflege von Benutzerkonten für Schüler, Lehrer und Mitarbeiter). Die Klassen der Schulabgänger müssen ebenfalls über das Import-Skript für Gruppen entfernt werden.

  2. Die bestehenden Klassen sollten umbenannt werden. Dies stellt sicher, dass Dateien, die auf einer Klassenfreigabe gespeichert werden und somit einer Klasse zugeordnet sind, nach dem Schuljahreswechsel weiterhin der Klasse unter dem neuen Klassennamen zugeordnet sind.

    Die ältesten Klassen (die der Abgänger zum Schulende) müssen zuvor gelöscht werden. Die Umbenennung erfolgt über das Skript /usr/share/ucs-school-import/scripts/rename_class, das auf dem Primary Directory Node als Benutzer root aufgerufen werden muss. Es erwartet den Namen einer tab-separierten CSV-Datei als ersten Parameter. Die CSV-Datei enthält dabei pro Zeile zuerst den alten und dann den neuen Klassennamen, z.B.

    gymmitte-6B     gymmitte-7B
    gymmitte-5B     gymmitte-6B
    

    Die Reihenfolge der Umbenennung ist wichtig, da die Umbenennung sequentiell erfolgt und der Zielname nicht existieren darf.

    Bemerkung

    Beim Umbenennen der Klassen-Freigaben werden auch deren Werte für Samba-Name sowie die erzwungene Gruppe automatisch angepasst, sofern diese noch die Standardwerte des UCS@school-Importskriptes aufweisen.

    Bei manuellen Änderungen müssen diese Werte nach dem Umbenennen der Klasse nachträglich manuell angepasst werden.

  3. Eine aktuelle Liste aller verbleibenden Schülerdaten wird über das Import-Skript neu eingelesen (Aktion M, siehe Pflege von Benutzerkonten für Schüler, Lehrer und Mitarbeiter).

  4. Eine Liste aller Neuzugänge wird aus der Schulverwaltungssoftware exportiert und über das Import-Skript importiert (Aktion A, siehe Pflege von Benutzerkonten für Schüler, Lehrer und Mitarbeiter).

4.4. Skriptbasierter Import von Netzwerken#

Der skriptbasierte Import von Netzwerken legt IP-Subnetze im LDAP an und konfiguriert diverse Voreinstellungen wie zum Beispiel Adressen von Routern (Gateways), DNS-Server und WINS-Server für diese Subnetze. Darunter fällt zum Beispiel auch ein Adressbereich, aus dem für neuangelegte Systeme automatisch IP-Adressen vergeben werden können.

Der skriptbasierte Import ist insbesondere in Szenarien empfehlenswert, wo UCS für die Verteilung der Netzwerkkonfiguration über DHCP zum Einsatz kommt und damit die Netzwerkkonfiguration von Clients übernimmt. Insbesondere größere UCS@school-Umgebungen profitieren vom skriptbasierten Import von Netzwerken.

In kleineren Umgebungen kann es flexibler sein, wenn Administratoren die Netzwerkeinstellungen über die Univention Management Console vornehmen. UCS erstellt automatisch entsprechende Netzwerkobjekte für das Netzwerk eines Rechnerkontos. Bei der Verwendung von DHCP über UCS und im Unterschied zum skriptbasierten Import müssen Administratoren über die Univention Management Console die DHCP-Richtlinie für Rechnerkonten mit Vorgaben zu Gateway, DNS-Server oder WINS-Server manuell anlegen.

Siehe auch

Univention Corporate Server - Handbuch für Benutzer und Administratoren [2]:

Konfiguration von Clients durch DHCP-Richtlinien

zum Anlegen einer DHCP Richtlinie mit Vorgaben zu Gateway, DNS-Server oder WINS-Server

Verwaltung der Rechnerkonten über Univention Management Console Modul

zum Anlegen von Rechnerkonten

Administratoren können Netzwerke auf der Kommandozeile über das Skript /usr/share/ucs-school-import/scripts/import_networks aus einer CSV Datei importieren, indem sie es auf dem Primary Directory Node als Benutzer root starten. Das Skript erstellt Netzwerkobjekte inklusive einer DHCP-Richtlinie mit Vorgaben zu Gateway, DNS-Server und WINS-Server.

Tab. 4.2 zeigt das Format der Import-Datei. Das Skript import_networks erwartet Tabulatorzeichen zur Trennung der einzelnen Felder. Optionale Felder stehen in Klammern und dürfen in der Import-Datei leer bleiben, zum Beispiel (IP-Adressbereich). Quellcode 4.1 zeigt ein Beispiel.

Tab. 4.2 Format der Import-Datei für import_networks#

Feld

Beschreibung

Mögliche Werte

OU

OU des zu modifizierenden Netzwerks

g123m

Netzwerk

Netzwerk und Subnetzmaske

10.0.5.0/255.255.255.0

(IP-Adressbereich)

Bereich, aus dem IP-Adressen für neuangelegte Systeme automatisch vergeben werden

10.0.5.10-10.0.5.140

(Router)

IP-Adresse des Routers

10.0.5.1

(DNS-Server)

IP-Adresse des DNS-Servers

10.0.5.2

(WINS-Server)

IP-Adresse des WINS-Servers

10.0.5.2

Bemerkung

Quellcode 4.1 verwendet Tabulatorzeichen zur Trennung der Felder. Nutzen Sie den Link zum Herunterladen der Importdatei für die weitere Verwendung.

Quellcode 4.1 Beispiel für eine Importdatei#
g123m   10.0.5.0        10.0.5.1    10.0.5.2    10.0.5.2
g123m   10.0.6.0/25 10.0.6.5-10.0.6.120 10.0.6.1    10.0.6.2    10.0.6.15

Das Skript import_networks verwendet Voreinstellungen, wenn folgende Angaben in der CSV Datei für den Netzwerkimport fehlen:

  • Netzmaske 255.255.255.0, wenn im Feld Netzwerk keine Angabe über die Netzmaske vorliegt.

  • IP Adressbereich X.Y.Z.20-X.Y.Z.250, wenn im Feld IP-Adressbereich keine Angabe über den Adressbereich vorliegt.

Zur Vereinfachung der Administration der Netzwerke steht zusätzlich das Skript import_router zur Verfügung, das nur den Default-Router für das angegebene Netzwerk neu setzt. Es verwendet das gleiche Format wie import_networks.

4.5. Import von Rechnerkonten#

Rechnerkonten können entweder einzeln über ein spezielles UMC-Modul oder über ein spezielles Import-Skript als Massenimport angelegt werden. Die Rechnerkonten sollten vor dem Domänenbeitritt von z.B. Windows-PCs angelegt werden, da so sichergestellt wird, dass die für den Betrieb von UCS@school notwendigen Informationen im LDAP-Verzeichnis vorhanden sind und die Objekte an der korrekten Position im LDAP-Verzeichnis abgelegt wurden.

Nach dem Anlegen der Rechnerkonten können die PCs über den im UCS-Handbuch beschriebenen Weg der Domäne beitreten.

4.5.1. Skriptbasierter Import von PCs#

Der Import mehrerer PCs erfolgt über das Skript /usr/share/ucs-school-import/scripts/import_computer, das auf dem Primary Directory Node als Benutzer root aufgerufen werden muss. Es erwartet den Namen einer CSV-Datei als ersten Parameter, die in folgender Syntax definiert wird. Die einzelnen Felder sind durch ein Tabulatorzeichen zu trennen.

Es ist zu beachten, dass Computernamen domänenweit eindeutig sein müssen. Das heißt, ein Computer windows01 kann nicht in mehreren OUs verwendet werden.

Um die Eindeutigkeit zu gewährleisten, wird empfohlen, jedem Computernamen die OU voranzustellen oder zu integrieren (z.B. 340win01 für Schule 340).

Feld

Beschreibung

Mögliche Werte

Beispiel

Rechnertype

Typ des Rechnerobjektes

ipmanagedclient, macos, windows, ubuntu, linux

windows

Name

zu verwendender Rechnername

wing123m-01

MAC-Adresse

MAC-Adresse (wird für DHCP benötigt)

00:0c:29:12:23:34

OU

OU; in der das Rechnerobjekt modifiziert werden soll

g123m

IP-Adresse (/Netzmaske) oder IP Subnetz

IP-Adresse des Rechnerobjektes und optional die passende Netzmaske; alternativ das Ziel-IP-Subnetz

10.0.5.45/255.255.255.0

(Inventarnr.)

Optionale Inventarnummer

TR47110815-XA-3

(Weitere Felder)

Optionale zusätzliche Attribute

description

Die Subnetzmaske kann sowohl als Präfix (24) als auch in Oktettschreibweise (255.255.255.0) angegeben werden. Die Angabe der Subnetzmaske ist optional. Wird sie weggelassen, wird die Subnetzmaske 255.255.255.0 angenommen.

Wird im Feld IP-Adresse (/ Netzmaske) nur ein Subnetz angegeben (z.B. 10.0.5.0), wird dem Computerobjekt automatisch die nächste freie IP-Adresse aus diesem IP-Subnetz zugewiesen.

Beispiel für eine Importdatei:

ipmanagedclient  routerg123m-01   10:00:ee:ff:cc:02  g123m  10.0.5.1
windows          wing123m-01      10:00:ee:ff:cc:00  g123m  10.0.5.5
windows          wing123m-02      10:00:ee:ff:cc:01  g123m  10.0.5.6
macos            macg123m-01      10:00:ee:ff:cc:03  g123m  10.0.5.7
ubuntu           ubuntug123m-01   10:00:ee:ff:cc:04  g123m  10.0.5.8
linux            linuxg123m-01    10:00:ee:ff:cc:05  g123m  10.0.5.9
ipmanagedclient  printerg123m-01  10:00:ee:ff:cc:06  g123m  10.0.5.250

Die importierten Rechner werden so konfiguriert, dass ihnen die angegebene IP-Adresse automatisch per DHCP zugeordnet wird, sofern auf dem Schulserver der DHCP-Dienst installiert ist, und der angegebene Rechnername über das Domain Name System (DNS) aufgelöst werden kann.

Ab UCS@school 5.0 v2 wird das Ausführen von Python Hooks während des Computer Imports unterstützt (siehe Python-Hooks).

Ab UCS@school 5.0 v3 wird das Ausführen von Python Hooks unterstützt, die ausschließlich während des Computer Imports ausgeführt werden. Sie werden vor bzw. nach den Python Hooks beim Erstellen der UCS@school Objekte ausgeführt.

Ähnlich wie bei den Python-Hooks, muss zur Nutzung der Hook-Funktionalität eine Python-Klasse erstellt werden, die von ucsschool.importer.utils.computer_pyhook.ComputerPyHook ableitet. Der Name der Datei mit der abgeleiteten Klasse muss auf .py enden und die Datei im Verzeichnis /usr/share/ucs-school-import/pyhooks abgespeichert werden. Neben den Funktionalitäten der Python Hooks steht in den Hook Methoden der Parameter row als Liste zur Verfügung, der die Werte der CSV Zeile als Liste enthält. Dies erlaubt es zusätzliche Werte zu setzen.

class SchoolComputerImportHook#
from typing import List
from ucsschool.lib.models.computer import SchoolComputer
from ucsschool.importer.utils.computer_pyhook import ComputerPyHook

 class SchoolComputerImportHook(ComputerPyHook):
     model = SchoolComputer
     priority = {
         "pre_create": 10,
         "post_create": 20,
     }

     def post_create(self, obj: SchoolComputer, row: List[str]) -> None:
         ...

     def post_create(self, obj: SchoolComputer, row: List[str]) -> None:
         ...

4.6. Konfiguration von Druckern an der Schule#

Der Import der Drucker kann skriptbasiert über das Skript /usr/share/ucs-school-import/scripts/import_printer erfolgen, das auf dem Primary Directory Node als Benutzer root aufgerufen werden muss. Es erwartet den Namen einer CSV-Datei als ersten Parameter, die in folgender Syntax definiert wird. Die einzelnen Felder sind durch ein Tabulatorzeichen zu trennen.

Feld

Beschreibung

Mögliche Werte

Beispiel

Aktion

Art der Druckermodifikation

A=Hinzufügen, M=Modifizieren, D=Löschen

A

OU

OU, in der das Druckerobjekt modifiziert werden soll

g123m

Druckerserver

Name des zu verwendenden Druckservers

dcg123m-01

Name

Name der Druckerwarteschlange

laserdrucker

URI

URI, unter dem der Drucker erreichbar ist

lpd://10.0.5.250

Die Druckerwarteschlange wird beim Anlegen eines neuen Druckers auf dem im Feld Druckserver angegebenen Druckserver eingerichtet. Das URI-Format unterscheidet sich je nach angebundenem Drucker und ist in Konfiguration von Druckerfreigaben in Univention Corporate Server - Handbuch für Benutzer und Administratoren [2] beschrieben.