Hallo,
@Michael hatte mich gebeten zu zeigen, wie ich die Custom Felder ins Ldap mit linuxmusterTools
pflege, ich gebe hier einige kleine Beispiele.
Der Grund für eine solche Pflege ist, dass wir andere Daten in externe Dienste brauchen, wie z.B. Kürzel, Quota, Emailquota, Fächer …
Diese Daten habe ich als csv von verschiedene Quellen, dann brauche ich nur noch einen Skript um die Felder ins Ldap zzu schreiben, der jede Nacht per Cronjob aufgerufen wird:
import csv
from linuxmusterTools.ldapconnector import LMNLdapReader as lr, UserWriter as uw
from linuxmusterTools.quotas import get_user_quotas
# Alle Lehrer auflisten
teachers = lr.get('/roles/teacher', attributes=['cn', 'givenName', 'sn'])
## CSV in der Form NAME;VORNAME;KUERZEL;FACH1,FACH2...;ANDERE DATEN usw...
with open('PFAD/MYCSV.csv','r') as f:
r = csv.reader(f, delimiter=';')
for entry in r:
name = entry[0]
kuerzel = entry[2]
for teacher in teachers:
if teacher['sn'].lower() == name.lower():
faecher = entry[3].split(',')
uw.setattr(teacher['cn'], data={'sophomorixCustom1':kuerzel, 'sophomorixCustomMulti1':faecher})
quotas = get_user_quotas(teacher['cn'])['default-school']
uw.setattr(teacher['cn'], data={'sophomorixCustom2': f"{quotas['hard_limit']};{quotas['used']}"})
break
else:
print(f"Teacher {name} not found.")
Man kann natürlich auch die Emails anpassen, wie man will:
# Verrücktes Muster z.B. name.--.vorname@DOMAIN
domain = "mydomain.schule"
email = f"{teacher['sn']}.--.{teacher['givenName']}@{domain}"
uw.setattr(teacher['cn'], data={'proxyAddresses':email})
Ich nutze proxyAddresses
als Ldap Email Feld für meine externe Dienste.
linuxmuster-api7
ist basiert auf linuxmuster-tools
und ermöglicht, mit passenden Rechten, auch diese Daten zu pflegen, in der Form von einem Request POST SERVER_URL/users/USER
.
Gruß
Arnaud