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 (,)
- Keine Anführungszeichen als Feldbegrenzer
- Keine Spaltenköpfe in der ersten Zeile
Import-Skript
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')
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