= Benutzer-Import in GOsa² = == CSV-Datei für Import == === GOsa² 2.6.x (Debian squeeze) === Für den LDAP-Import aus CSV-Datei erwartet GOsa² das folgende CSV-Tabellenformat: * Trennzeichen: Komma (,) * d.h. Textfelder dürfen kein Komma (,) enthalten (!!!) * Keine Anführungszeichen als Feldbegrenzer * Keine Spaltenköpfe in der ersten Zeile == Import-Skript == Einschränkungen: * FIXME: Klasse darf nicht im ersten oder letzten Feld stehen... {{{#!highlight bash #!/bin/bash if [ -z "$1" ]; then echo "usage $(basename $0) " exit -1 fi FILENAME=$1 IMPORTFILE=import_$FILENAME cat $FILENAME | while read line; do line=$(echo $line | sed -r -e 's/(.*[0-9]{1,2})\.(1|2)([a-z]{1};.*)/\1\3/g' -e 's/;/,/g') ALREADY_EXISTS="START" NACHNAME=$(echo $line | cut -d";" -f1 | cut -d " " -f1 | cut -d "-" -f1); VORNAME=$(echo $line| cut -d";" -f2 | cut -d " " -f1 | cut -d "-" -f1); i=3; while [ ! -z "$ALREADY_EXISTS" ]; do NACHNAME_KURZ=${NACHNAME:0:3} VORNAME_KURZ=${VORNAME:0:$i} LOGIN=$(echo ${NACHNAME_KURZ}${VORNAME_KURZ} | iconv -f UTF-8 -t ASCII//TRANSLIT | tr A-Z a-z); ALREADY_EXISTS=$(getent passwd $LOGIN 1>/dev/null && echo "!!! ALREADY_EXISTS !!!"); i=$(($i+1)); done echo "$line,$LOGIN,`pwgen -v 8 1` $ALREADY_EXISTS"; done | tee $IMPORTFILE echo DUPLICATES=`cat $IMPORTFILE | while read line; do LOGIN=$(echo $line | cut -d";" -f7); grep -v "$line" $IMPORTFILE | grep "$LOGIN" 1>/dev/null && echo "$LOGIN"; done | uniq | sort` if [ ! -z "$DUPLICATES" ]; then echo "Doppelte Logins innerhalb dieser Liste:" echo echo -e $DUPLICATES | sed 's/ /\n/g' echo fi echo "Die Datei für den GOsa²-Import heißt \"$IMPORTFILE\"." echo }}}