Mail, sophomorixCustom1 --> Custom-eMail-Felder (HowTo)

Hallo.
Es ist eine never-ending-Story … aber ich hatte gerade folgende Idee:

Das Feld mail im AD ist offenbar nicht „stabil“, da es von jedem sophomorix-update wieder auf den Standard-Wert überschrieben wird. Wenn man den Eintrag also selbst ändert, hat man nicht lange etwas davon.

Andererseits ist das sophomorixCustom1-Custom-Feld nicht per default eingetragen … daher frage ich mich, ob etwas gegen diese Vorgehensweise spricht:

Mit
sophomorix-user -u <username> –set-single-value-attribute sophomorixCustom1 –entry <login@meine-schule.de>

könnte man die gleiche Adresse, die im Feld mail steht, auch in das Feld sophomorixCustom1 übertragen. Das wäre mit einem Mini-Script schnell erledigt…

Danach könnte man sowohl unter moodle als auch Nextcloud anstelle des mail- Feldes in den User-Profilen das sophomorixCustom1-Feld verwenden. Der sinnvolle Nebeneffekt wäre meiner Meinung nach: In Kombination mit der Landingpage von @dorian könnte jeder, der eine andere Adresse als die Dienst-Adresse im sophomorixCustom1-Feld einträgt diese Adresse permanent behalten.

Der nächste sophomorix-update-Durchlauf würde das nicht wieder ändern. Setzt das zufällig jemand von Euch so um?
Spricht etwas dagegen oder habe ich etwas übersehen?

Viele Grüße,
Michael

Hallo Michael,

Das ist genau was ich dich vor ein paar Monate vorgeschlagen habe, und auch was ich mache. Einige externe Dienste von uns nutzen dieses Feld anstatt mail. Die Customfelder kann man jetzt in die Webui auch steuern.
Was noch fehlt, ist das der User es anpassen kann.

Gruß

Arnaud

Hallo Arnaud,
ja, ich weiß, dass Du das vorgeschlagen hattest … allerdings fehlte da imho der Schritt, dass man die Einträge beider Felder zunächst für alle User identisch macht, oder?
Viele Grüße,
Michael

Hallo Michael,

Ich verstehe da der Sinn nicht. Das Ziel ist die custom Felder zu verwenden um eine andere Emailaddresse einzutragen.
Falls es darum geht, auf einmal Massenänderung zu erledigen, dafür sind die sophomorix Custom Filter da : Export and Filters · linuxmuster/sophomorix4 Wiki · GitHub ( das hatte Dorian auch erwähnt ).

So sollte den Workflow aussehen :

  • export aus ASB ( z.B. oder etwas anderes ) mit Email,
  • Kopie auf dem LMN Server,
  • importieren mit Custom Filter ( der Custom filter sollte geschrieben sein, um alle Email ins customFeld zu updaten ).

Solche CustomFilterSkript habe ich nicht geschrieben, da ich es nicht brauche.

Gruß

Arnaud

Genau – das Problem dabei ist aber: Ich muss mich bei moodle / Nextcloud / $LDAP-Dienst immer entscheiden, wie das Feld heißt, in dem die eMail-Adresse steht. Setzte ich da also mail erhalte ich zwar für alle User eine gültige Adresse – aber die wäre beim nächsten sophomorix-Durchlauf wieder auf dem default-Wert.

Setze ich hingegen die sophomorixCustom1-Adresse, so wäre das Feld bei ganz vielen Usern am Anfang leer.

Daher meinte ich: Am Anfang sollten beide Einträge identisch gemacht werden. Nur dann hätte jeder User eine gültige Adresse UND man könnte sie anschließend problemlos ändern…

Du nutzst Landing Page von Dorian. So, wenn Landing Page mit sophomorixCustom1 anstatt mail konfiguriert ist, können deine User die Email ändern.

Damit bleibt deine Hauptfrage : wie kann man die EInträge aus mail ins sophomorixCustom1 kopieren ? Entweder per Skript oder von Hand. Das muss man sowieso nur einmal tun, danach ist es erledigt.

Als ich es machen musste, habe ich den Login und mail Felder per LDAP gefragt und das Ergebnis mit dem Befehl ergänzt : Mailserver, Nextcloud-Feld, schulweite Adressen ... nochmal nachgefragt! - #7 von Arnaud

Gruß

Arnaud

Ja, ich wollte den Befehl vorhin schon anwerfen … doch bevor ich irgendwelche Aktionen am AD mache, frage ich vorher meistens doch lieber nochmal hier im Forum. Es könnte ja irgendwelche Nebenwirkungen haben, die man gerade überhaupt nicht auf dem Zettel hat…?!

Natürlich könnte man mit der Landingpage auch zunächst alle User „zwingen“, sich da anzumelden, eine gültige sophomorixCustom1 Adresse einzutragen und hätte das Problem auch gelöst … aber ich wette, dass es dann einige doch wieder nicht machen … der andere Weg ist eleganter.

Allerdings: Wie gehst Du nach der nächsten Versetzung vor? Dann müsstest Du ja nur diejenigen User erwischen, bei denen das Feld noch leer ist (also z.B. der gesamte neue Jahrgang 5).

Die sophomorixCustom Felder sind nirgendwo verwendet und wirklich nur geplant um Flexibilität an die Admins zur Verfügung zu stellen.

Bei mir haben nur die Lehrer eine Email.

Gruß

Arnaud

Ok aber auch für diese Einträge gilt das gleiche: kommt im neuen Schuljahr ein neuer Kollege dazu, kannst du nicht einfach für alle erneut den Befehl absetzen, der die mail-Adresse auf das sophomorixCustom-Feld kopiert. Dann wären eigene Eintragungen überschrieben/gelöscht. Daher muss man sich auch für diesen Fall einen Weg überlegen, wie man nur die User abfragt, bei denen im sophomorixCustom-Feld noch nichts steht …

Das sehe ich in die Webui, und kann es dort ändern : Preserve additional columns in students.csv · Issue #182 · linuxmuster/linuxmuster-webui7 · GitHub

Wenn es nur einzelne User sind, hast Du natürlich Recht … aber wenn man schulweite Adressen für alle anbieten will, ist das per Handarbeit nicht umsetzbar, meine ich.

Deswegen habe ich vorher von den sophomorix Custom Filter gesprochen … im Post 4.

Scheint (noch) niemand hier zu verwenden, oder?

Ich verwende es. Ich habe mit einem simplen Script einmal alle Adressen aus mail in sophomorixCustom1 kopiert und seitdem läuft es.

Hi, wir gesagt: das Kopieren selbst ist nicht das Problem. Berücksichtigt Dein Script denn den Fall, dass nur dann kopiert wird, wenn das custom-Feld noch leer ist?

Viele Grüße
Michael

ja.
VG, Dorian

Würdest Du das hier zur Verfügung stellen?

Wenn ich das richtig sehe, kann man das Feld sophomorixCustom1 nicht einfach über sowas wie [[ ! -z "$var" ]] abfragen, da es bei den Usern, die da noch nichts eingetragen haben, überhaupt nicht angezeigt wird, richtig? (Ich habe es mit sophomorix-user wie auch mit ldapsearch versucht …). Daher ist mir nicht ganz klar, wie ich danach mit den üblichen Bordmitteln grep’en lassen soll?!

Ich hab das nur zusammen gehackt und es war sehr spezifisch auf unsere Installation zugeschnitten. Ich habe leider kein fertiges Script, das Du einfach so benutzen kannst. Außerdem hab ich Python benutzt und kein Bash, weil mein Script noch alles Mögliche andere mit den Nutzern macht, und mir Sophomorix dafür zu langsam ist.

Probier mal ein bisschen rum, du wirst es schon hinbekommen.

… möglich, dauert aber bei mir vermutlich 10x länger als bei einem geübten Programmierer :slight_smile:
Ein erster Ansatz wäre bei mir:

ldapsearch  -b "ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=lan" -H ldaps://server.linuxmuster.lan:636 -x -D global-binduser@linuxmuster.lan -w super-geheimes-PW '(|(sophomorixRole=teacher)(sophomorixRole=student))' |grep -e mail -e sophomorixCustom1

Das spuckt sehr schnell alle Einträge für sämtliche Lehrer und Schüler aus — und man sieht auch, wer bereits seine Adresse geändert hat …

Aber dann: Es müsste ja nun nach denen gesucht werden, für die das Feld sophomorixCustom1 nicht existiert …

… und tatsächlich. Es ist viel einfacher als gedacht, diejenigen zu filtern, die das Attribut sophomorixCustom1 nicht besitzen. Es klappt, wenn man den Suchbefehl auf diese Weise ändert:

ldapsearch  -b "ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=lan" -H ldaps://server.linuxmuster.lan:636 -x -D global-binduser@linuxmuster.lan -w super-geheimes-PW   '(&(!(sophomorixCustom1=*))(|(sophomorixRole=teacher)))' |grep -e mail -e sAMAccountName

Das spuckt dann nur noch diejenigen Accounts aus, die ihre eMail-Adresse noch nicht geändert haben. Diese Ausgabe lässt sich nun noch durch awk pipen – et voilà :slight_smile:

'(&(!(sophomorixCustom1=*))(|(sophomorixRole=teacher)))' |grep  
-e sAMAccountName | awk '{ ORS=/sAMAccountName:/ ?"":"\n"} {print $2","}'