#!/bin/bash
#
# 2008-11-19 [alex] Anpassung an neuen Server
# 2005-05-25 [yrm] Anpassung an neue public_html Struktur
# 2003-10-24 [stb] Nach meinen Tests laeuft das wunderbar.
# 2003-10-21 [stb] Erste Version.
#
# Kleine Teile (Numerische UID finden und so) kommen aus einem
# Skript des IN Berlin.
#
PATH=/bin:/usr/bin:/usr/local/bin
# Hilfe gewuenscht? Bitteschoen!
if [[ "$1" = "--help" ]] || [[ "$1" = "-h" ]]
then
echo "Benutzung: $(basename $0) [OPTION] [login]"
echo
echo "<login> ist beim Neuanlegen das gewuenschte Login und"
echo " beim Erstellen eines Antrages das bereits vorhandene."
echo
echo "Optionen:"
echo " --debug Debugging Informationen ausgeben."
echo " --antrag Antrag fuer einen vorhandenen Account erstellen."
echo " --nofbtest Den angegebenen Fachbereichsaccount nicht"
echo " ueberpruefen."
echo " --help Diese Kurzhilfe ausgeben."
exit 0
fi
# Verwendete Umgebungsvariablen sicherheitshalber loeschen
unset ACCOUNT
unset ACCOUNTTESTED
unset ANTRAG
unset BROWSER
unset DEBUG
unset INFACCOUNT
unset INFACCOUNTTEST
unset NEWSHELL
unset NEWSHELLNUMWRONG
unset NNAME
unset ORT
unset PLZ
unset SPLINE
unset STREET
unset TEL
unset VNAME
LOG=/usr/local/bin/accountantrag/lduseradd.log
TEMPLATE=/usr/local/bin/accountantrag/account.tex.template
PENGUIN=/usr/local/bin/accountantrag/penguin.eps
# Kommandozeilenoptionen abfragen
while [[ "$1" = "--"* ]]
do
case $1 in
"--debug") DEBUG="1";;
"--antrag") ANTRAG="1";;
"--nofbtest") INFACCOUNTTEST="NOTEST";;
*) echo "Unbekannte Option: $1"; exit 1;;
esac
shift
done
# Textbrowser suchen
[[ -x /usr/bin/lynx ]] && BROWSER=/usr/bin/lynx
[[ -x /usr/bin/links ]] && BROWSER=/usr/bin/links
[[ -x /usr/bin/w3m ]] && BROWSER=/usr/bin/w3m
[[ -x /usr/bin/wget ]] && BROWSER=/usr/bin/wget
# Keiner gefunden? Mist.
if [[ "$BROWSER" = "" ]]
then
echo Kein Browser verfuegbar. Installiere bitte entweder
echo /usr/bin/lynx,
echo /usr/bin/links oder
echo /usr/bin/w3m.
echo /usr/bin/wget.
exit 1
fi
# Wenn das Skript nicht debuggen soll, wird FD 2 auf /dev/null
# umgeleitet.
[[ "$DEBUG" != "" ]] || exec 2>/dev/null
# Als Beispiel: 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 "Browser: $BROWSER" >&2
# Wenn ein Account angegeben war, dann wird der jetzt in
# Kleinbuchstaben umgewandelt.
ACCOUNT=$(echo $1 | tr [A-Z] [a-z])
# Die Variable fuer die grosse while-Schleife.
OK="0"
echo
echo "Wenn bei der Eingabe ein Wert in eckigen Klammern steht,"
echo "kann dieser mit RETURN uebernommen werden."
echo
# In dieser while-Schleife werden alle Daten abgefragt.
while [[ "$OK" = "0" ]]
do
# Das gewuenschte Login ...
if [[ "$ACCOUNT" = "" ]]
then
if [[ "$ANTRAG" = "" ]]
then
echo -n "Gewuenschtes "
fi
echo -n "Login: "
read ACCOUNT
# Umwandeln in Kleinbuchstaben.
ACCOUNT=$(echo $ACCOUNT | tr [A-Z] [a-z])
# Ein neues Login wurde angegeben, das demnach noch nicht
# ueberprueft ist.
unset ACCOUNTTESTED
# Durch die continues am Ende der if-Abfragen (die kommen
# haeufig vor) spare ich mir innere while-Schleifen.
continue
fi
# Es soll nur der Antrag erzeugt werden.
if [[ "$ANTRAG" = "1" ]] && [[ "$ACCOUNTTESTED" = "" ]]
then
# Gibt es dieses Login ueberhaupt?
if ( ! ldapsearch -b "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."
unset ACCOUNT
continue
else
# Ja! Dann kann ja mal der Name aus der LDAP-Datenbasis geholt
# werden ...
FULLNAME=$(ldapsearch -LLL -x \
-b "dc=spline,dc=inf,dc=fu-berlin,dc=de" \
"(uid=$ACCOUNT)" cn | grep "^cn" | cut -d" " -f2-)
# ... und versucht werden, Nachnamen und Vornamen rauszufischen.
# Der Nachname ist alles nach dem letzten Leerzeichen ...
NNAMEHINT=$(echo $FULLNAME | sed 's/^.* \([^ ]\+\)$/\1/')
# ... und der Vorname alles davor.
VNAMEHINT=$(echo $FULLNAME | sed 's/^\(.*\) [^ ]\+$/\1/')
fi
# Ja, es gibt den Account.
ACCOUNTTESTED="DONE"
fi
# Der Account soll neu erstellt werden.
if [[ "$ACCOUNTTESTED" = "" ]] && [[ "$ANTRAG" = "" ]]
then
# Ungueltige Zeichen?
if ( echo $ACCOUNT | grep -E '(^[[:digit:]]|[^[:alpha:][:digit:]])' >&2 )
then
echo
echo "\"$ACCOUNT\" enthaelt unzulaessige Zeichen oder beginnt"
echo "mit einer Ziffer."
unset ACCOUNT
continue
fi
# zu lang?
if [[ "$ACCOUNT" = ?????????* ]]
then
echo "\"$ACCOUNT\" enthaelt zu viele Zeichen."
unset ACCOUNT
continue
fi
# Gibt es das Login schon?
if ( ldapsearch -b "dc=spline,dc=inf,dc=fu-berlin,dc=de" \
-x uid="$ACCOUNT" \
| grep -E "^uid|^gecos" >&2 )
then
echo
echo "$ACCOUNT ist bereits vergeben."
unset ACCOUNT
continue
fi
# hat schon irgendein Rechner den gleichen Namen/ das gleiche
# Alias wie das gewuenschte Login?
if [[ "$(checkDomain $ACCOUNT)" == "" ]]
then
echo
echo "Das Login $ACCOUNT ist zwar nicht vergeben, aber die"
echo "Domain $ACCOUNT.spline[.inf.fu-berlin].de kann nicht auf"
echo "/var/users/$ACCOUNT/public_html zeigen, da die Domain bereits"
echo "existiert. Um dies zu vermeiden, ist es sinnvoll, ein"
echo "anderes Login zu waehlen."
echo "Du kannst aber erstmal die anderen Daten eingeben; am"
echo "Schluss kommt ein Menue, in dem du das Login aendern kannst."
echo
fi
# Wenn das Skript hier angelangt ist, ist alles OK.
ACCOUNTTESTED="DONE"
fi
# Nachnamen abfragen.
if [[ "$NNAME" = "" ]]
then
echo -n "Nachname"
# Wenn ein Antrag fuer ein vorhandenes Login erstellt werden soll,
# wurde weiter oben versucht, den Nachnamen rauszufinden. Das ist
# dann hier verfuegbar und wird uebernommen, wenn einfach RETURN
# gedrueckt wird.
if [[ "$NNAMEHINT" != "" ]]
then
echo -n " [$NNAMEHINT]"
fi
echo -n ": "
read NNAME
NNAME=${NNAME:-$NNAMEHINT}
# Ungueltige Zeichen?
if ( echo $NNAME | grep -E '([^A-Za-z])' >&2 )
then
echo
echo "\"$NNAME\" enthaelt unzulaessige Zeichen (Umlaute?)."
unset NNAME
continue
fi
continue
fi
# Vornamen abfragen.
if [[ "$VNAME" = "" ]]
then
echo -n "Vorname"
# Das gleiche mit dem Vornamen.
if [[ "$VNAMEHINT" != "" ]]
then
echo -n " [$VNAMEHINT]"
fi
echo -n ": "
read VNAME
VNAME=${VNAME:-$VNAMEHINT}
# Ungueltige Zeichen?
if ( echo $VNAME | grep -E '([^A-Za-z])' >&2 )
then
echo
echo "\"$VNAME\" enthaelt unzulaessige Zeichen (Umlaute?)."
unset VNAME
continue
fi
continue
fi
# Die Strasse abfragen.
if [[ "$STREET" = "" ]]
then
echo -n "Strasse und Hausnummer: "
read STREET
# Ungueltige Zeichen?
if ( echo $STREET | grep -E '([^A-Za-z 0-9\.])' >&2 )
then
echo
echo "\"$STREET\" enthaelt unzulaessige Zeichen (Umlaute?)."
unset STREET
continue
fi
continue
fi
# Postleitzahl ...
if [[ "$PLZ" = "" ]]
then
echo -n "PLZ: "
read PLZ
# Wenn die PLZ etwas anderes als Ziffern enthaelt ...
if ( echo $PLZ | grep -E '[^[:digit:]]' >&2 )
then
echo
echo "Eine PLZ mit etwas anderem als Ziffern?"
unset PLZ
continue
fi
continue
fi
# Ort, default "Berlin"
if [[ "$ORT" = "" ]]
then
echo -n "Ort [Berlin]: "
read ORT
ORT=${ORT:-Berlin}
fi
# Telephonnummer
if [[ "$TEL" = "" ]]
then
echo -n "Telephonnummer: "
read TEL
# Aehnlich wie bei der PLZ, nur dass hier jetzt erstens auch andere
# Zeichen oder auch "keine" eingegeben werden darf.
# in der regex muss das "-" an's Ende!!
if [[ "$TEL" != "keine" ]] \
&& ( echo $TEL | grep -E '[^ \+()[:digit:]\/\-]' >&2 )
then
echo
echo "Eine Telephonnummer mit etwas anderem als Ziffern"
echo "oder den Zeichen \"/\", \"-\", \"+\", \"(\", \")\", Leerzeichen?"
echo "Wenn es keine gibt, gib \"keine\" ein."
unset TEL
continue
fi
continue
fi
# Der Account am Fachbereich soll auch auf dem Antrag stehen.
if [[ "$INFACCOUNT" = "" ]]
then
echo -n "Accountname am Fachbereich: "
read INFACCOUNT
if [[ "$INFACCOUNTTEST" != "NOTEST" ]]
then
unset INFACCOUNTTEST
fi
continue
fi
# Wenn nicht --nofbtest als Kommandozeilenparameter angegeben war
# oder der Test uebergangen werden soll, dann wird hier jetzt
# geprueft, ob der angegebene Account existiert.
# TODO: Wie kann auch noch der Realname zum Account rausgefunden
# werden? In der passwd auf page.mi.fu-berlin.de steht der
# leider nicht drin.
if [[ "$INFACCOUNTTEST" != "YES" ]] \
&& [[ "$INFACCOUNTTEST" != "NOTEST" ]]
then
# In meinem cgi-bin in der Inf gibt es ein CGI, das YES oder NO
# ausgibt, je nachdem, ob der uebergebene Account in der
# /etc/passwd auf page.mi.fu-berlin.de steht.
# fb test umgestellt auf eine ssh version --alex 4.11.08
#COMMAND="$BROWSER -dump \
# \"http://page.mi.fu-berlin.de/~berndts/cgi-bin/acc.sh?$INFACCOUNT\" \
# | grep -E \"YES|NO\" | awk '{print \$1}'"
#echo "Browser wird aufgerufen durch: $COMMAND" >&2
#INFACCOUNTTEST=$(eval $COMMAND)
INFACCOUNTTEST=$(echo "$INFACCOUNT" | ssh fbgetUser "~/.checkUser")
# Kein continue, damit gleich die Ueberpruefung des Ergebnisses
# vorgenommen wird.
fi
if [[ "$INFACCOUNTTEST" != "0" ]] \
&& [[ "$INFACCOUNTTEST" != "NOTEST" ]]
then
echo
echo "Es existiert kein FB-Account $INFACCOUNT."
echo "(Oder irgendwas am Script ist kaputt.)"
echo "Wenn du trotzdem den FB-Account $INFACCOUNT eintragen moechtest,"
echo -n "gib jetzt JA ein (ausgeschrieben und gross): "
read INFACCOUNTTEST
if [[ "$INFACCOUNTTEST" = "JA" ]]
then
INFACCOUNTTEST="NOTEST"
else
unset INFACCOUNT
unset INFACCOUNTTEST
continue
fi
fi
# Wenn ein neuer Account erstellt wird, braucht der auch eine
# Shell.
# Ausnahmsweise eine innere while-Schleife.
while [[ "$NEWSHELL" = "" ]] && [[ "$ANTRAG" = "" ]]
do
# Stolz bin ich auf folgendes :)
# Alle nichtleeren Zeilen aus /etc/shells greppen und jeder
# durch das cat -n eine Nummer geben.
echo
AVAILABLESHELLSCOMMAND='grep -v "^$\|^#" /etc/shells'
echo AVAILABLESHELLSCOMMAND: $AVAILABLESHELLSCOMMAND >&2
eval $AVAILABLESHELLSCOMMAND | cat -n
echo
# Die bash soll durch druecken von RETURN ausgewaehlt werden
# koennen. Damit da dann trotzdem eine Zahl steht, muss die
# erstmal rausgefunden werden.
DEFAULTSHELL=$(eval $AVAILABLESHELLSCOMMAND \
| cat -n \
| grep -E "[[:blank:]]/bin/bash[[:blank:]]*$" \
| awk '{print $1}')
# Wenn im vorherigen Durchgang eine ungueltige Zahl eingegeben
# wurde, gibt es eine Fehlermeldung.
if [[ "$NEWSHELLNUMWRONG" != "" ]]
then
echo "$NEWSHELLNUMWRONG ist keine gueltige Wahl."
unset NEWSHELLNUMWRONG
fi
echo -n "Gewuenschte Shell [$DEFAULTSHELL]: "
read NEWSHELLNUM
NEWSHELLNUM=${NEWSHELLNUM:-$DEFAULTSHELL}
NEWSHELLNUMWRONG="$NEWSHELLNUM"
# Die richtige Zeile aus /etc/shells holen ...
NEWSHELL=$(eval $AVAILABLESHELLSCOMMAND \
| sed -n "s/[[:blank:]]//g;${NEWSHELLNUM}p")
done
# Wird jetzt nicht mehr gebraucht bzw. liefert Falschmeldungen.
unset NEWSHELLNUMWRONG
# Wird fuer den Test des FB-Accounts benutzt.
unset GEPRUEFT
# Wenn nicht getestet, dann steht das auch in der Zusammenfassung.
if [[ "$INFACCOUNTTEST" = "NOTEST"* ]]
then
GEPRUEFT=" nicht unbedingt"
fi
# Zusammenfassung ...
echo
echo "1 Login: $ACCOUNT"
echo "2 Name: $NNAME"
echo "3 Vorname: $VNAME"
echo "4 Strasse und Hausnummer: $STREET"
echo "5 PLZ: $PLZ"
echo "6 Ort: $ORT "
echo "7 Telephonnummer: $TEL"
echo "8 FB-Account: $INFACCOUNT (existiert${GEPRUEFT})"
[[ "x$ANTRAG" = "x" ]] && echo "9 Shell: $NEWSHELL"
echo
echo "x Abbrechen"
echo "0 Fertig"
echo
echo "Wenn du etwas aendern willst, gib die entsprechende Zahl ein,"
echo -n "ansonsten die 0 fuer \"Fertig\" oder x zum Abbrechen: "
read AENDERN
case $AENDERN in
"0") OK="1";;
"1") unset ACCOUNT;;
"2") unset NNAME;;
"3") unset VNAME;;
"4") unset STREET;;
"5") unset PLZ;;
"6") unset ORT;;
"7") unset TEL;;
"8") unset INFACCOUNT;;
"9") [[ "x$ANTRAG" = "x" ]] && unset NEWSHELL;;
"x") exit 0;;
"X") exit 0;;
esac
done
# Abfragen, wer die Daten eingegeben hat.
while [[ "$SPLINE" = "" ]]
do
echo
echo "Ach ja: du, die/ der gerade den Account"
echo -n "anlegt, bist wer? (login): "
read SPLINE
# Ueberpruefen, ob es den Account gibt.
if ( ! ldapsearch -b "dc=spline,dc=inf,dc=fu-berlin,dc=de" \
-x uid="$SPLINE"|grep -E "^uid:" >&2 )
then
echo
echo "Glaub' ich dir nicht."
unset SPLINE
fi
done
# Antrag erstellen
DATUM=$(date -I)
NEWNAME="account-$DATUM-$ACCOUNT.ps"
TMPDIR=/tmp/account-$(date -Is)
mkdir $TMPDIR
# Jedenfalls dann, wenn das temporaere Verzeichnis zur Verfuegung steht.
if [[ -d $TMPDIR ]]
then
CURRENTDIR=$(pwd)
cd $TMPDIR
# Pinguin herkopieren.
cp $PENGUIN .
# Die Platzhalter im Template werden ersetzt ...
REPLACE="s%XXXACCOUNTXXX%$ACCOUNT%g;"
REPLACE=$REPLACE"s%XXXDATUMXXX%$DATUM%g;"
REPLACE=$REPLACE"s%XXXSPLINEXXX%$SPLINE%g;"
REPLACE=$REPLACE"s%XXXNNAMEXXX%$NNAME%g;"
REPLACE=$REPLACE"s%XXXVNAMEXXX%$VNAME%g;"
REPLACE=$REPLACE"s%XXXSTREETXXX%$STREET%g;"
REPLACE=$REPLACE"s%XXXPLZXXX%$PLZ%g;"
REPLACE=$REPLACE"s%XXXORTXXX%$ORT%g;"
REPLACE=$REPLACE"s%XXXTELEPHONXXX%$TEL%g;"
REPLACE=$REPLACE"s%XXXINFACCOUNTXXX%$INFACCOUNT%g"
# ... wenn sed aufgerufen wird.
sed "$REPLACE" $TEMPLATE > account-$ACCOUNT.tex
echo
echo -n "Das kann jetzt einen Moment dauern. Der Antrag wird generiert ... "
echo >&2
# LaTeX und dvips aufrufen.
latex account-$ACCOUNT.tex >&2
dvips -o account-$ACCOUNT.ps account-$ACCOUNT.dvi >&2
echo "fertig."
# und den Antrag umbenennen.
mv account-$ACCOUNT.ps $NEWNAME
# Wenn nur der Antrag erstellt werden soll,
if [[ "$ANTRAG" = "1" ]]
then
# pruefen, ob die Userin/ der User ein public_html hat und,
if [[ -d /var/users/$ACCOUNT/public_html/webroot ]]
then
# wenn ja, dann den Antrag da hin schieben.
mv -f $NEWNAME /var/users/$ACCOUNT/public_html/webroot/
echo
echo "Der Antrag kann unter"
echo "http://www.spline.inf.fu-berlin.de/~$ACCOUNT/$NEWNAME"
echo "abgerufen und dann ausgedruckt und unterschrieben werden."
else
# wenn nicht, dann eben ins root-home packen.
mv -f $NEWNAME /root/
echo
echo "Der Antrag ist als /root/$NEWNAME gespeichert."
fi
cd $CURRENTDIR
# fertig. Aufraeumen.
#rm -rf $TMPDIR
fi
cd $CURRENTDIR
unset CURRENTDIR
else
echo "Konnte Benutzungsantrag nicht erstellen."
fi
# Nur der Antrag? Dann ist das jetzt fertig.
[[ "$ANTRAG" = "1" ]] && exit 0
# Maximale UID diesseits von 65000 bestimmen.
UIDNUMBER=$(ldapsearch -b "dc=spline,dc=inf,dc=fu-berlin,dc=de" \
-x objectclass=shadowAccount uidNumber \
| awk -F: \
'/uidNumber:/ {if (max <= $2 && $2 < 65000 ) max = $2;} END {print max+1}')
echo "Numerische UID: $UIDNUMBER" >&2
touch $LOG
chmod 600 $LOG
echo "Angelegt am $(date -I) um $(date '+%H:%Mh') von $SPLINE" >> $LOG
echo "Login: $ACCOUNT" >> $LOG
echo "Numerische UID: $UIDNUMBER" >> $LOG
echo "Name: $NNAME" >> $LOG
echo "Vorname: $VNAME" >> $LOG
echo "Strasse und Hausnummer: $STREET" >> $LOG
echo "PLZ: $PLZ" >> $LOG
echo "Ort: $ORT " >> $LOG
echo "Telephonnummer: $TEL" >> $LOG
echo "FB-Account: $INFACCOUNT (existiert${GEPRUEFT})" >> $LOG
echo "Shell: $NEWSHELL" >> $LOG
echo >> $LOG
# Template fuer den LDAP-Eintrag fuellen.
cat > /tmp/ld.new.$$ << EOF
dn: uid=$ACCOUNT,ou=People,dc=spline,dc=inf,dc=fu-berlin,dc=de
uid: $ACCOUNT
cn: $VNAME $NNAME
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}5Y
shadowLastChange: 10990
shadowMax: 99999
shadowWarning: 7
uidNumber: $UIDNUMBER
gidNumber: 100
homeDirectory: /home/$ACCOUNT
loginShell: $NEWSHELL
gecos: $VNAME $NNAME
EOF
# Eintrag in die LDAP-Datenbank
ldapadd -x -D "cn=admin,dc=spline,dc=inf,dc=fu-berlin,dc=de" \
-y /etc/ldapadd.secret -f /tmp/ld.new.$$ \
|| echo "Fehler beim Eintrag in die LDAP-Datenbank."
# Mal sehen, ob der Account jetzt da ist.
if ( id $ACCOUNT >&2 )
then
echo Account erfolgreich in das LDAP-Verzeichnis eingetragen.
else
echo "Eintrag in das LDAP-Verzeichnis fehlgeschlagen."
echo "Vielleicht mal mit --debug aufrufen."
exit 1
fi
# Verzeichnisse anlegen
cp -a /etc/skel /home/$ACCOUNT
# public_html mit leerer index.html (gegen directory listings)
ssh www-data@userpage.spline.inf.fu-berlin.de sudo mkdir -p /var/users/$ACCOUNT/public_html/webroot
ssh www-data@userpage.spline.inf.fu-berlin.de sudo mkdir -p /var/users/$ACCOUNT/public_html/cgi-bin
ssh www-data@userpage.spline.inf.fu-berlin.de sudo mkdir -p /var/users/$ACCOUNT/public_html/logs
ssh www-data@userpage.spline.inf.fu-berlin.de sudo touch /var/users/$ACCOUNT/public_html/webroot/index.html
ln -s /var/users/$ACCOUNT/public_html /home/$ACCOUNT/
# Mail mit leerer Incoming, die dann auch noch die richtigen
# Rechte bekommt.
mkdir -p /home/$ACCOUNT/Mail
touch /home/$ACCOUNT/Mail/Incoming
chmod 600 /home/$ACCOUNT/Mail/Incoming
# Accountantrag verschieben.
ssh www-data@userpage.spline.inf.fu-berlin.de sudo chown -R www-data: /var/users/$ACCOUNT/
scp $TMPDIR/$NEWNAME www-data@userpage.spline.inf.fu-berlin.de:/var/users/$ACCOUNT/public_html/webroot/
ssh www-data@userpage.spline.inf.fu-berlin.de chmod 644 /var/users/$ACCOUNT/public_html/webroot/$NEWNAME
# Und aufraeumen.
#rm -rf $TMPDIR
# Verzeichnisse samt Inhalt verschenken.
chown -R $ACCOUNT: /home/$ACCOUNT
ssh www-data@userpage.spline.inf.fu-berlin.de sudo chown -R $UIDNUMBER:users /var/users/$ACCOUNT/
# Und aufraeumen.
rm /tmp/ld.new.$$
if [ -x /usr/local/bin/userSubGenerate ]
then
echo "Generiere die Domains $ACCOUNT.spline.inf.fu-berlin.de und"
echo "$ACCOUNT.spline.de sowie die Verweise"
echo "http://$ACCOUNT.spline[.inf.fu-berlin].de/ ->"
echo " /home/$ACCOUNT/public_html/..."
echo
/usr/local/bin/userSubGenerate
echo
fi
# Abonnementrequests an die Mailinglisten spline und splinux absetzen.
echo
echo "Versuche, $ACCOUNT@spline.inf.fu-berlin.de auf den"
echo "Mailinglisten spline und splinux einzutragen ..."
# Im Realname muessen Leerzeichen und Umlaute webgerecht ersetzt werden.
REALNAMEESC=$(perl -e'$e = shift; $e =~ s/([^\w])/'\''%'\''.sprintf("%X", ord($1))/ge; print $e;' "$VNAME $NNAME")
# Das Abonnieren geht auch ueber das WWW.
SPLINEEINTRAG="$BROWSER -dump \"http://lists.spline.inf.fu-berlin.de/mailman/subscribe/spline?email=$ACCOUNT@spline.inf.fu-berlin.de&fullname=$REALNAMEESC\""
SPLINUXEINTRAG="$BROWSER -dump \"http://lists.spline.inf.fu-berlin.de/mailman/subscribe/splinux?email=$ACCOUNT@spline.inf.fu-berlin.de&fullname=$REALNAMEESC\""
if [ "$BROWSER" == "/usr/bin/wget" ] ; then
SPLINEEINTRAG="$BROWSER --no-check-certificate -O /dev/null \"http://lists.spline.inf.fu-berlin.de/mailman/subscribe/spline?email=$ACCOUNT@spline.inf.fu-berlin.de&fullname=$REALNAMEESC\""
SPLINUXEINTRAG="$BROWSER --no-check-certificate -O /dev/null \"http://lists.spline.inf.fu-berlin.de/mailman/subscribe/splinux?email=$ACCOUNT@spline.inf.fu-berlin.de&fullname=$REALNAMEESC\""
fi
echo >&2
echo "Spline: $SPLINEEINTRAG" >&2
eval $SPLINEEINTRAG >&2
echo >&2
echo "Splinux: $SPLINUXEINTRAG" >&2
eval $SPLINUXEINTRAG >&2
echo "... versucht :) Nicht vergessen, Mails zu lesen!"
echo "Mit einer .forward-Datei im Heimatverzeichnis "
echo "kann die mail weitereleitet werden."
# So lange versuchen, das Passwort zu setzen, bis es geklappt hat.
echo
echo "Passwort setzen:"
while ( ! ldpasswd $ACCOUNT )
do
echo
echo "Passwort setzen:"
done
echo
echo "Fertig. BenutzerIn komplett angelegt."
echo
echo "Der Antrag / die Verpflichtungserklaerung kann unter"
echo "http://www.spline.inf.fu-berlin.de/~$ACCOUNT/$NEWNAME"
echo "abgerufen und dann ausgedruckt und unterschrieben werden."
echo
echo
echo "Bitte auf beep /usr/local/bin/userSubGenerate ausführen, da"
echo "sonst keine subdomains erstellt werden."
echo "Stand: Mo 18. Okt 21:08:03 CEST 2010"
echo