summaryrefslogtreecommitdiffstats
path: root/ldpasswd
diff options
context:
space:
mode:
Diffstat (limited to 'ldpasswd')
-rwxr-xr-xldpasswd72
1 files changed, 72 insertions, 0 deletions
diff --git a/ldpasswd b/ldpasswd
new file mode 100755
index 0000000..3573f3a
--- /dev/null
+++ b/ldpasswd
@@ -0,0 +1,72 @@
+#!/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 "<login> 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/ldapadd.secret \
+ "uid=$ACCOUNT,ou=People,dc=spline,dc=inf,dc=fu-berlin,dc=de"
+
+if [[ $? != 0 ]]
+then
+ echo "Fehler beim Eintrag in die LDAP-Datenbank. (passwort mismatch?)"
+ exit 1
+fi
+
+exit 0