4. Synchronisation#
Ein Synchronisationslauf liest die Schuldaten aus dem LDAP-Verzeichnis, schreibt sie in CSV-Dateien, packt die Dateien in ein ZIP-Archiv und lädt das Archiv zu Apple School Manager hoch. Dieses Kapitel beschreibt den Lauf selbst und die Daten, die er überträgt.
4.1. Synchronisation ausführen#
Drei Auslöser starten einen Synchronisationslauf:
Der Cron-Job aus Synchronisation zeitlich planen.
Das Speichern der App-Einstellungen, wenn Sie
asm/run_on_appsetting_saveaktiviert haben.Der Befehl asm-upload auf der Kommandozeile.
$ /usr/sbin/asm-upload
Der Befehl gibt Fortschrittsmeldungen im Terminal aus und schreibt ein ausführlicheres Log nach /var/log/univention/asm.log. Er endet mit einem Exit-Status ungleich null, wenn die Zugangsdaten fehlen oder der Upload in ein Konto fehlschlägt.
4.1.1. Ablauf eines Synchronisationslaufs#
Der Connector liest die Einstellungsdatei
/etc/asm-connections.json, wie in Einstellungsdatei beschrieben. Ein fehlender oder ungültiger Eintrag bricht den Lauf ab, ebenso eine Schule, die es im LDAP-Verzeichnis nicht gibt.Der Connector sammelt die Schulen, Schulklassen, Arbeitsgruppen, Lehrer und Schüler aus dem LDAP-Verzeichnis, beschränkt auf die Schulen des Kontos und durch die LDAP-Filter aus Benutzer mit einem LDAP-Filter auswählen.
Der Connector schreibt die sechs CSV-Dateien aus Die CSV-Dateien in ein temporäres Verzeichnis.
Der Connector packt die CSV-Dateien in
/var/lib/asm/asm_TIMESTAMP.zipund entfernt das temporäre Verzeichnis.TIMESTAMPist der Zeitpunkt, zu dem der Connector das Archiv erstellt hat, im Format ISO 8601, zum Beispiel2026-10-01T03:00:12.345678.Der Connector öffnet eine SFTP-Verbindung zu
upload.appleschoolcontent.comund lädt das Archiv alsarchive.ziphoch. Den Host-Schlüssel prüft er gegen/etc/asm_public_key.Der Connector setzt
asm/last_uploadundasm/last_upload/ACCOUNTauf die aktuelle Uhrzeit und löscht das Archiv, sofern Sieasm/store_zipnicht aktiviert haben.
Bei mehreren Konten wiederholt der Connector die Schritte 2 bis 6 für jedes Konto.
Jeder Lauf überträgt den vollständigen Datenbestand. Der Connector verfolgt nicht, was sich seit dem letzten Lauf geändert hat.
4.1.2. Wie Apple School Manager die Daten übernimmt#
Apple School Manager vergleicht die hochgeladenen Daten mit den Konten, die es verwaltet:
Ein Benutzer, der zum ersten Mal auftaucht, erhält ein neues Konto.
Ein Benutzer, der nicht mehr im Upload enthalten ist, wird sofort deaktiviert und nach 30 Tagen gelöscht.
Ein Benutzer, dessen Attribute sich geändert haben, behält sein Konto, solange die Spalte
person_idunverändert bleibt. Siehe Identifikation von Benutzern.
4.2. Die CSV-Dateien#
Das Archiv enthält die folgenden sechs Dateien. Apple dokumentiert ihr Format in Apple Inc. [4]. Der Connector sortiert die Zeilen jeder Datei nach Schule und anschließend nach Benutzer- oder Klassenname.
Datei |
Inhalt |
|---|---|
|
Eine Zeile pro Schule. |
|
Eine Zeile pro Schulklasse und Arbeitsgruppe. |
|
Eine Zeile pro Schulklasse und Arbeitsgruppe, mit den Lehrern dieser Klasse. |
|
Eine Zeile pro Lehrer. |
|
Eine Zeile pro Schüler. |
|
Eine Zeile pro Mitgliedschaft eines Schülers in einer Schulklasse oder Arbeitsgruppe. |
4.2.1. Standorte#
Spalte |
Quelle in UCS@school |
|---|---|
|
Name der Schule, zum Beispiel |
|
Anzeigename der Schule. Hat die Schule keinen Anzeigenamen, verwendet der Connector stattdessen den Namen. |
4.2.2. Kurse#
Apple School Manager verlangt, dass jede Klasse zu einem Kurs gehört. UCS@school kennt nur die Schulklasse oder Arbeitsgruppe, daher exportiert der Connector jede davon zweimal: einmal als Kurs in courses.csv und einmal als Klasse dieses Kurses in classes.csv. Beide Zeilen verwenden den Namen der Gruppe als ID, sodass jeder Kurs genau eine Klasse hat.
Spalte |
Quelle in UCS@school |
|---|---|
|
Name der Schulklasse oder Arbeitsgruppe einschließlich des Schulpräfixes, zum Beispiel |
|
Derselbe Wert wie |
|
Gebildet aus |
|
Name der Schule. |
4.2.3. Klassen#
Spalte |
Quelle in UCS@school |
|---|---|
|
Name der Schulklasse oder Arbeitsgruppe. |
|
Standardmäßig leer. Siehe |
|
Name der Schulklasse oder Arbeitsgruppe. |
|
Die |
|
Die |
|
Name der Schule. |
Bemerkung
Apple School Manager unterstützt höchstens 15 Lehrer pro Klasse. Hat eine Klasse mehr, synchronisiert der Connector die ersten 15 und schreibt eine Warnung in die Logdatei.
4.2.4. Mitarbeiter#
Spalte |
Quelle in UCS@school |
|---|---|
|
Das Attribut aus |
|
Derselbe Wert wie |
|
Vorname des Lehrers. |
|
Erster Wert von |
|
Nachname des Lehrers. |
|
Primäre E-Mail-Adresse, angepasst durch |
|
Benutzername des Lehrers. |
|
Primäre Schule des Lehrers. |
|
Die weiteren Schulen des Lehrers, in alphabetischer Reihenfolge. |
Die Datei enthält Lehrer sowie Lehrer mit zusätzlicher Mitarbeiterrolle. Mitarbeiter ohne Lehrerrolle sind nicht Teil des Exports.
4.2.5. Schüler#
Spalte |
Quelle in UCS@school |
|---|---|
|
Das Attribut aus |
|
Derselbe Wert wie |
|
Vorname des Schülers. |
|
Erster Wert von |
|
Nachname des Schülers. |
|
Das Attribut aus |
|
Primäre E-Mail-Adresse, angepasst durch |
|
Benutzername des Schülers. |
|
Der Wert von |
|
Primäre Schule des Schülers. |
|
Die weiteren Schulen des Schülers, in alphabetischer Reihenfolge. |
Prüfungsbenutzer sind nicht Teil des Exports.
4.2.6. Roster#
Spalte |
Quelle in UCS@school |
|---|---|
|
Der Klassenname und die |
|
Name der Schulklasse oder Arbeitsgruppe. |
|
Die |
Die Datei enthält nur Schüler. Lehrer werden einer Klasse über die Spalten instructor_id von classes.csv zugeordnet.
4.3. Hochgeladene Daten prüfen#
Um zu sehen, was der Connector hochlädt, aktivieren Sie asm/store_zip in den App-Einstellungen und führen Sie die Synchronisation aus. Der Connector behält das Archiv dann in /var/lib/asm/.
$ ls -l /var/lib/asm/
$ unzip -d /var/tmp/asm "$(ls -t /var/lib/asm/*.zip | head -1)"
Vorsicht
Die Archive enthalten personenbezogene Daten. Löschen Sie sie, sobald Sie sie nicht mehr benötigen, und deaktivieren Sie asm/store_zip wieder.