Verwaltung von Schulen über Importskripte
Contents
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:
Feld |
Beschreibung |
Mögliche Werte |
Beispiel |
---|---|---|---|
Aktion |
Art der Gruppenmodifikation |
|
|
OU |
OU, in der die Gruppe modifiziert werden soll |
— |
|
Gruppenname |
Der Name der Gruppe |
— |
|
(Beschreibung) |
Optionale Beschreibung der Gruppe |
— |
|
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:
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.
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.
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).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#
Durch den Import von Netzwerken können IP-Subnetze im LDAP angelegt werden und diverse Voreinstellungen wie Adressen von Router, DNS-Server etc. für diese Subnetze konfiguriert werden. Darunter fällt z.B. auch ein Adressbereich aus dem für neuangelegte Systeme automatisch IP-Adressen vergeben werden können.
Das Importieren von Subnetzen empfiehlt sich in größeren UCS@school-Umgebungen. Kleinere Umgebungen können diesen Schritt häufig überspringen, da fehlende Netzwerke beim Import von Rechnerkonten automatisch angelegt werden.
Netzwerke können derzeit nur auf der Kommandozeile über das Skript
/usr/share/ucs-school-import/scripts/import_networks importiert
werden. Das Skript muss auf dem Primary Directory Node als Benutzer root
aufgerufen
werden. In der Import-Datei sind die einzelnen Felder durch ein Tabulatorzeichen
zu trennen. Das Format der Import-Datei ist wie folgt aufgebaut:
Feld |
Beschreibung |
Mögliche Werte |
---|---|---|
OU |
OU des zu modifizierenden Netzwerks |
|
Netzwerk |
Netzwerk und Subnetzmaske |
|
(IP-Adressbereich) |
Bereich, aus dem IP-Adressen für neuangelegte Systeme automatisch vergeben werden |
|
(Router) |
IP-Adresse des Routers |
|
(DNS-Server) |
IP-Adresse des DNS-Servers |
|
(WINS-Server) |
IP-Adresse des WINS-Servers |
|
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
Wird für das Feld Netzwerk keine Netzmaske angegeben, so wird automatisch die
Netzmaske 255.255.255.0
verwendet. Sollte der IP-Adressbereich nicht
explizit angegeben worden sein, wird der Bereich X.Y.Z.20-X.Y.Z.250 verwendet.
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 |
|
|
Name |
zu verwendender Rechnername |
— |
|
MAC-Adresse |
MAC-Adresse (wird für DHCP benötigt) |
— |
|
OU |
OU; in der das Rechnerobjekt modifiziert werden soll |
— |
|
IP-Adresse (/Netzmaske) oder IP Subnetz |
IP-Adresse des Rechnerobjektes und optional die passende Netzmaske; alternativ das Ziel-IP-Subnetz |
— |
|
(Inventarnr.) |
Optionale Inventarnummer |
— |
|
(Weitere Felder) |
Optionale zusätzliche Attribute |
— |
|
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 |
|
|
OU |
OU, in der das Druckerobjekt modifiziert werden soll |
— |
|
Druckerserver |
Name des zu verwendenden Druckservers |
— |
|
Name |
Name der Druckerwarteschlange |
— |
|
URI |
URI, unter dem der Drucker erreichbar ist |
— |
|
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.