Email im LDAP mit sophomorix

Hallo alle zusammen,

um die korrekten email Adressen in owncloud zu haben, damit man aus der owncloud emails über Aktivitäten erhalten kann, hab ich nach dieser Anleitung mal die Maildomain auf meine geändert:

https://www.linuxmuster.net/wiki/dokumentation:sophomorix:e-mail-adresse_im_ldap_konfigurieren

Super Sache, jetzt stehe bei meinem user (Anzeigen mittels smbldap-usershow baumhof) drin:
baumhof@meinedomain.de
… nur leider ist meine email Adresse:
holger.baumhof@meinedomain.de

Kein Problem: kann ich ja selber Ändern in der Schulkonsole nach dieser Anleitung:

http://docs.linuxmuster.net/de/latest/howtos/use-mail-ldap/installation.html

Aber: das muss jeder user selber machen.
Jetzt traue ich aber nicht jemdem User zu die Änderung in der Schulkonsole hin zu bekommen (es geht nicht nur um “Lehrer”), also würde ich das als admin gerne selber machen können.
Weiß jemand wie?

man sophomorix-mail
hab ich schon befragt: sieht nicht nach der von mir gesuchten Lösung aus.

Viele Grüße

Holger

Hallo Holger,

Wenn es immer um das gleiche Muster geht, kannst du eventuell dieses Skript anpassen und als Cron-Job einrichten : https://www.linuxmuster.net/wiki/_media/moodle:addmail2ldap.sh.zip
So habe ich es gemacht.

Gruß

Arnaud

Hallo Arnaud,

ich hatte erwähnungen von addmail2ldap.sh gefunden, aber keinen Hinweis, wo man das her bekommt.

Einfach verwenden will ich das Script nicht: erst möchte ich genau wissen was es tut.
Ich bin nicht gut im scripten: da kann ich was lernen.

Vielen Dank

Holger

Kein Problem, ich kann für dich etwas vorbereiten mit Kommentaren, und dann kannst du testen / verstehen / anpassen, aber erst morgen.
Willst du immer eine Email in der Form NAME.VORNAME@DOMAIN.DE ? ( normalerweise unproblematisch für Lehrer, aber es kann 2 mal die gleiche Email bei den Schülern geben )

Hallo Arnaud,

Danke für deine Hilfe.
Ich bin schon am zerstückeln des Scriptes.
Gerade versuche ich zwei neue Variablen ein zu fügen:
MYPRE (Vorname)
und
MYPOST (Nachname.
Das sind givenName und sn in smbldap-usershow.
Das muss ich auslesen und zurechtstuzen.
Dann ist das für Lehrer schon fertig.
Bei Schülern ist es tatsächlich schwieriger.
Es geht ums Semianr: da hab ich nicht so viele (nur 500 Stück) und die haben die Adressen im Kurs 2017:
vorname.nachname.k17@mydomain.de
Und im Kurs 2016
vorname.nachname.k16@mydomain.de
Da die “Klasse” jeweils k16 und k17 heißen, bekomme ich das auch zusamengestückelt (schätze ich :-).

Aber jetzt erstmal die vierte Folge Game of Thrones schauen :-))

LG

Holger

Ok, sag einfach wenn du Hilfe brauchst, das Skript ist nicht besonders kompiiziert … und die vierte Folge von GoT ist schon gut, dass soll man nicht auf die Seite legen :slight_smile:

Hallo Holger,

wir haben uns extra für die Benutzernamen als Mailadresse entschieden damit es keine doppelten Mailadressen geben kann.
Den Namen kann man in den meisten Mailanwendungen zu den Mailadressen ja auch mit dazu schreiben:

Max Mustermann <mus@beispiel.de>

Bei uns haben allerdings nur die Lehrer ein Mailaccount und zwar nur bei Belwue.

Gruß
Stefan

Hallo Arnaud,

Ok, sag einfach wenn du Hilfe brauchst, das Skript ist nicht besonders
kompiiziert …

ich hab mal ein wenig rumgeschraubt und folgendes erschaffen;

#!/bin/bash
# HIB modifiziertes AddMail2LDAP von Joerg Richter
for lehrer in /home/teachers/*; do
  MYUSER=$(echo $lehrer | cut -d "/" -f 4)
  MYMAIL=$(ldapsearch -x -b "ou=accounts,dc=linuxmuster,dc=local"
"(uid=${MYUSER})" mail|grep "^mail:"| cut -d\: -f2)
  MYPRE=$(ldapsearch -x -b "ou=accounts,dc=linuxmuster,dc=local"
"(uid=${MYUSER})" givenName|grep "^givenName:"| cut -d\: -f2)
  MYPOST=$(ldapsearch -x -b "ou=accounts,dc=linuxmuster,dc=local"
"(uid=${MYUSER})" sn|grep "^sn:"| cut -d\: -f2)
#  MYPRE=$(ldapsearch -x -b "ou=accounts,dc=linuxmuster,dc=local"
"(uid=${MYUSER})" givenName|grep "^givenName:"| cut -d\: -f2)
#  if [ -z "$MYMAIL" ]; then
    echo "AddMail2LDAP Lehrer(${MYUSER}) bisher(${MYMAIL})
neu(${MYPRE}.${MYPOST}@semgym-karlsruhe.de)"
#    smbldap-usermod -M ${MYUSER}@gymnasium-himmelsthuer.de $MYUSER
#  else
#    echo "AddMail2LDAP Lehrer(${MYUSER}) bisher(${MYMAIL}) bleibt"
#  fi
#  echo "${MYUSER}      : ${MYMAIL}"

done

Zwei Probleme habe ich:

  1. smbldap-usershow baumhof gibt folgendes:
    sn: Baumhof
    givenName: Holger

Daraus macht mein script
holger. baumhof@semgym-karlsruhe.de
Also muss ich noch die beiden Leerzeichen weg bekommen…

  1. ich mußte die Prüfung, ob sich was ändert rausnehmen, weil ich die
    Abfrage:
    if [ -z “$MYMAIL” ]; then
    nicht verstehe.
    Was bedeutet der Parameter
    -z
    ?
    Ich hätte an der Stelle einen Vergleich von zwei Werten erwartet und
    nicht ein -z VARIABLE …
    Bei mir sagt er nämlich sonst immer, dass sich nichts ändert…

Noch eine Frage:
was bedeutet:
MYUSER=$(echo $lehrer | cut -d “/” -f 4)
Ich meine das
cut -d “/” -f 4
Er schneidet nach dem vierten Slash?
Aber er soll doch nach dem dritten schneiden?

LG

Holger

Das ganze ist nicht besonders lesbar, dein Skript bräuchte ein bisschen Formatierung noch :slight_smile:

  1. Leerzeichen : du musst lieber mit Leerzeichen statt “:” in cut verwenden für die Definition von $MYPRE und $MYPOST.
  2. Die Option “-z” testet ob der String leer ist. Dein Test bedeuten : “Wenn $MYMAIL leer ist, dann …”.
  3. Wenn es 3 Trennzeichen “/” gibt, dann gibt es auch 4 Felder. Z.B. in “/home/arnaud/lml” : Das erste Feld ist vor das erste Trennzeichen, das heißt leer. Das zweite Feld ist home, das dritte arnaud, das vierte lml.

Gruß

Arnaud

Hallo Arnaud,

Das ganze ist nicht besonders lesbar, dein Skript bräuchte ein bisschen
Formatierung noch :slight_smile:

… Design ist nicht mein Ding :slight_smile:

  1. Leerzeichen : du musst lieber mit Leerzeichen statt “:” in cut
    verwenden für die Definition von $MYPRE und $MYPOST.

super: klappt.

  1. Die Option “-z” testet ob der String leer ist. Dein Test bedeuten :
    “Wenn $MYMAIL leer ist, dann …”.

… Ah: ja so kann ich di Abfrage nicht brauchen.

  1. Wenn es 3 Trennzeichen “/” gibt, dann gibt es auch 4 Felder. Z.B. in
    “/home/arnaud/lml” : Das erste Feld ist vor das erste Trennzeichen,
    das heißt leer. Das zweite Feld ist home, das dritte arnaud, das
    vierte lml.

OK: das hab ich jetzt auch verstanden.
Jetzt bleibt aber Dummerweise noch ein Problem.
Ich bekomme nun wie gewollt die Adresse
Holger.Baumhof@semgym-karlsruhe.de
heraus … aber eben mit Großbuchstaben.
Sind Mailadressen Casesensitive?
Eigentlich nicht, oder?
Kann ich die Buchstaben per Script “klein” machen?

LG

Holger

Groß oder Klein ist “normalerweise” kein Problem, aber es gibt manche Server ( selten ) die Casesensitive sind.
Zum Glück kann awk es lösen :

# echo "AbCdEf" | awk '{print tolower($0)}'
abcdef

Das brauchst du einfach nach deinem “cut” in die Definitionen von $MYPRE und $MYPOST.

Die Anfrage “Wenn $MYMAIL leer ist” finde ich praktisch wenn ich den Skript verwende : manche Kollegen wollen ihre eingetragene ( in der Schulkonsole ) Email behalten, und das Skript macht eine Änderung nur wenn es leer ist.

Gruß

Arnaud