Revision 22 vom 2014-08-19 13:20:57

Nachricht löschen

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:

Tabellenspalten (Reihenfolge):

Import-Skript

Einschränkungen:

   1 #!/bin/bash
   2 
   3 if [ -z "$1" ]; then
   4         echo "usage $(basename $0) <csv-file>"
   5         exit -1
   6 fi
   7 
   8 FILENAME=$1
   9 IMPORTFILE=import_$FILENAME
  10 
  11 cat $FILENAME | while read line; do
  12 
  13         line=$(echo $line | sed -r -e 's/(.*[0-9]{1,2})\.(1|2)([a-z]{1};.*)/\1\3/g' -e 's/;/,/g')
  14 
  15         ALREADY_EXISTS="START"
  16 
  17         NACHNAME=$(echo $line | cut -d"," -f1 | cut -d " " -f1 | cut -d "-" -f1);
  18         VORNAME=$(echo $line| cut -d"," -f2 | cut -d " " -f1 | cut -d "-" -f1);
  19 
  20         i=3;
  21         while [ ! -z "$ALREADY_EXISTS" ]; do
  22                 NACHNAME_KURZ=${NACHNAME:0:3}
  23                 VORNAME_KURZ=${VORNAME:0:$i}
  24 
  25                 LOGIN=$(echo ${NACHNAME_KURZ}${VORNAME_KURZ} | iconv -f UTF-8 -t ASCII//TRANSLIT | tr A-Z a-z);
  26 
  27                 ALREADY_EXISTS=$(getent passwd $LOGIN 1>/dev/null && echo "!!! ALREADY_EXISTS !!!");
  28                 i=$(($i+1));
  29         done
  30 
  31         echo "$line,$LOGIN,`pwgen -v 8 1`   $ALREADY_EXISTS";
  32 done | tee $IMPORTFILE
  33 
  34 echo
  35 
  36 DUPLICATES=`cat $IMPORTFILE | while read line; do
  37 
  38         LOGIN=$(echo $line | cut -d";" -f7);
  39         grep -v "$line" $IMPORTFILE | grep "$LOGIN" 1>/dev/null && echo "$LOGIN";
  40 
  41 done | uniq | sort`
  42 
  43 if [ ! -z "$DUPLICATES" ]; then
  44 
  45         echo "Doppelte Logins innerhalb dieser Liste:"
  46         echo
  47         echo -e $DUPLICATES | sed 's/ /\n/g'
  48         echo
  49 fi
  50 
  51 echo "Die Datei für den GOsa²-Import heißt \"$IMPORTFILE\"."
  52 echo