Größe: 1247
Kommentar:
|
Größe: 1789
Kommentar:
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 2: | Zeile 2: |
== 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 == |
|
Zeile 6: | Zeile 18: |
ZWISCHENERGEBNIS=`tempfile` | if [ -z "$1" ]; then echo "usage $(basename $0) <csv-file>" exit -1 fi |
Zeile 8: | Zeile 23: |
cat students.csv | while read line; do | 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') |
Zeile 27: | Zeile 47: |
done | tee $ZWISCHENERGEBNIS | done | tee $IMPORTFILE |
Zeile 29: | Zeile 49: |
echo | |
Zeile 30: | Zeile 51: |
DUPLICATES=`cat $ZWISCHENERGEBNIS | while read line; do | DUPLICATES=`cat $IMPORTFILE | while read line; do |
Zeile 33: | Zeile 54: |
grep -v "$line" $ZWISCHENERGEBNIS | grep "$LOGIN" 1>/dev/null && echo "$LOGIN"; | grep -v "$line" $IMPORTFILE | grep "$LOGIN" 1>/dev/null && echo "$LOGIN"; |
Zeile 38: | Zeile 59: |
echo | |
Zeile 42: | Zeile 63: |
echo | |
Zeile 44: | Zeile 66: |
rm -f $ZWISCHENERGEBNIS | echo "Die Datei für den GOsa²-Import heißt \"$IMPORTFILE\"." echo |
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