#!/bin/bash # # 2004-09-14 [stb] Erste Version nach Verlust des alten Scripts. # PATH=/bin:/usr/bin:/usr/local/bin # Hilfe gewuenscht? Bitteschoen! if [[ "$1" = "--help" ]] || [[ "$1" = "-h" ]] || [[ $# = 0 ]] then echo "Benutzung: $(basename $0) [OPTION] login" echo echo " ist das Login, fuer das das Passwort" echo " geandert werden soll." echo echo "Optionen:" echo " --debug Debugging-Informationen ausgeben." echo " --help Diese Kurzhilfe ausgeben." exit 0 fi # Verwendete Umgebungsvariablen sicherheitshalber loeschen unset ACCOUNT unset ACCOUNTTESTED unset DEBUG # Kommandozeilenoptionen abfragen while [[ "$1" = "--"* ]] do case $1 in "--debug") DEBUG="1";; *) echo "Unbekannte Option: $1"; exit 1;; esac shift done # Wenn das Skript nicht debuggen soll, wird FD 2 auf /dev/null # umgeleitet. [[ "$DEBUG" != "" ]] || exec 2>/dev/null # Wenn ein Account angegeben war, dann wird der jetzt in # Kleinbuchstaben umgewandelt. ACCOUNT=$(echo $1 | tr [A-Z] [a-z]) # Als Beispiel fuer das Umleiten vn stdout: Das >&2 sagt, dass alles, was auf # FD 1 (stdout) ausgegeben wird -- bei echo eben der Text -- auf FD 2 # umgeleitet werden soll. Da das dann im Nicht-Debug-Modus wiederum auf # /dev/null umgeleitet wird, ist das dann nicht zu sehen. echo "Account: $ACCOUNT" >&2 # Gibt es dieses Login ueberhaupt? if ( ! ldapsearch -b "ou=People,dc=spline,dc=inf,dc=fu-berlin,dc=de" \ -x uid="$ACCOUNT" \ | grep -E "^uid|^gecos" >&2 ) then # Noe. echo "Es gibt keineN BenutzerIn mit dem Login $ACCOUNT." exit 1 fi # Eintrag in die LDAP-Datenbank ldappasswd -x -D "cn=admin,dc=spline,dc=inf,dc=fu-berlin,dc=de" \ -S -y /etc/ldap/slapd.secret \ "uid=$ACCOUNT,ou=People,dc=spline,dc=inf,dc=fu-berlin,dc=de" 2>&1 if [[ $? != 0 ]] then echo "Fehler beim Eintrag in die LDAP-Datenbank. (passwort mismatch?)" exit 1 fi exit 0