Ok, hier kommt das Script … es ist letztlich tatsächlich ein Zweizeiler:
#!/bin/bash
######################################################################################################################
# Scriptname : custom_Mail_Adresse.sh
# Author : Michael Hagedorn
# Date : 2021-11-02
# Category : geeignet für linuxmuster 7.x
#Version :
VER='1.0'
# Dieses Script ermittelt alle Useraccounts eines linuxmuster-v7-Servers, für welche das Attribut
# 'sophomorixCustom1' noch NICHT gesetzt wurde. Das ist immer dann der Fall, wenn man sich z.B. noch nicht an der
# Landingpage angemeldet und dort seine eMail-Adresse eingetragen hat. Daher wird für diese Accounts
# der Eintrag, der unter 'mail' gefunden wird, AUCH unter 'sophomorixCustom1' eingetragen! Der Vorteil
# ist, dass man dann sowohl unter moodle als auch unter Nextcloud auf das Feld 'sophomorixCustom1' zurückgreifen kann,
# denn die selbst eingetragene Änderung der eMail-Adresse bleibt auch dann bestehen, wenn man 'sophomorix-update'
# laufen lässt!
# Das Script sucht nach Lehrer- UND Schüler-Accounts. Das kann mit dem ldapsearch-Filter schnell angepasst werden!
######################################################################################################################
# Diese Variablen an die eigene Installation anpassen:
base="ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=lan"
server="ldaps://server.linuxmuster.lan:636"
binduser="global-binduser@linuxmuster.lan"
bindpw=$(cat /etc/linuxmuster/.secret/global-binduser)
######################################################################################################################
while IFS="," read login email;
do
echo "sophomorix-user -u $login --set-single-value-attribute sophomorixCustom1 --entry $email"
done < <(ldapsearch -b $base -H $server -x -D $binduser -w $bindpw '(&(!(sophomorixCustom1=*))(|(sophomorixRole=teacher)(sophomorixRole=student)))' |grep -e mail -e sAMAccountName | awk '{ ORS=/sAMAccountName:/ ?"":"\n"} {print $2","}')
Viele Grüße,
Michael
P.S.: Nach dem Durchlauf des Scriptes liefert ein erneuter Aufruf erwartungsgemäß keine Treffer mehr … es funktioniert also