Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »Joe2017« ist der Autor dieses Themas

Beiträge: 45

Registrierungsdatum: 01.08.2017

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: unbekannt

  • Nachricht senden

1

20.09.2017, 11:57

Ubuntu 16.06 LDAP ldapadd value #0 invalid per syntax

Ich befülle mein LDAP mit einem Script welches Variablen aus einer Datei ausließt.

Ich erhalte jedoch einen Fehler falls die Variable keinen Wert enthällt.
ldapadd value #0 invalid per syntax

Anbei mein Script:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function func-adduserstoaddressbook {
 echo "" > mod_contentu2ab.ldif
 while IFS=, read VARgivenname VARsurename VARou VARo VARstreet VARl VARst VARzip VARphone1 VARphone2 VARmobile VARmail
 do

cat >> mod_contentu2ab.ldif << EOF
dn: cn=$VARgivenname $VARsurename,ou=$VARou,dc=local,dc=net
objectclass:  top
objectclass:  inetOrgPerson
cn: $VARgivenname $VARsurename
sn: $VARsurename
givenName: $VARgivenname
mail: $VARmail
mobile: $VARmobile
l: $VARl
o: $VARo
postalCode: $VARzip
st: $VARst
street: $VARstreet
telephoneNumber: $VARphone1
pager: $VARphone2


EOF
 done < var_ldap_users2addressbook.csv
 ldapadd -x -c -D cn=admin,dc=local,dc=net -W -f mod_contentu2ab.ldif
}


Anbei meine Datei:

Quellcode

1
2
3
4
5
vorname,nachname,AddressBookOU,Firma,Straße,Ort,Land,Telefon1,Telefon2,Mobil,email
vorname,nachname,AddressBookOU,Firma,Straße,Ort,Land,,,Mobil,email
vorname,nachname,AddressBookOU,Firma,Straße,Ort,Land,Telefon1,,Mobil,email
vorname,nachname,AddressBookOU,Firma,Straße,Ort,Land,Telefon1,Telefon2,,email
vorname,nachname,AddressBookOU,Firma,Straße,Ort,Land,Telefon1,Telefon2,Mobil,email


In diesem Beispiel wird nur der erste und letzte Benutzer angelegt. Die restlichen drei werden nicht angelegt, da einige Variablen nicht befüllt wurden.
Gibt es hierzu eine Lösung? Leider finde ich hierzu nichts?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Joe2017« (20.09.2017, 16:28)


2

20.09.2017, 15:08

Im Beispiel liegt es offenbar an den leeren Variablen VARphone1 und VARphone2. Die kannst du von der Bash ersetzen lassen. Siehe 'man bash', Kapitel "Parameter Expansion".
Beispiel:

Quellcode

1
telephoneNumber: ${VARphone1:=none}
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »Joe2017« ist der Autor dieses Themas

Beiträge: 45

Registrierungsdatum: 01.08.2017

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: unbekannt

  • Nachricht senden

3

20.09.2017, 16:27

Hallo Fredl,

danke für den Tip. Das hilft mir auf jeden Fall weiter.

4

20.09.2017, 18:17

Aber gerne :)Der Beitrag ist nicht zu kurz.
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »Joe2017« ist der Autor dieses Themas

Beiträge: 45

Registrierungsdatum: 01.08.2017

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: unbekannt

  • Nachricht senden

5

21.09.2017, 14:06

Anbei noch mein fertiges Script. Ich habe es jetzt doch etzwas anders gelöst. VIelleicht ging es auch einfacher. :D

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function func-adduserstoaddressbook {
 echo "" > mod_contentu2ab.ldif
 while IFS=, read VARgivenname VARsurename VARou VARo VARstreet VARl VARst VARzip VARphone1 VARphone2 VARmobile VARmail
 do

if [ -z "$VARmail" ]; then mail="#"; else mail="mail: $VARmail"; fi
if [ -z "$VARmobile" ]; then mobile="#"; else mobile="mobile: $VARmobile"; fi
if [ -z "$VARphone1" ]; then telephoneNumber="#"; else telephoneNumber="telephoneNumber: $VARphone1"; fi
if [ -z "$VARphone2" ]; then pager="#"; else pager="pager: $VARphone2"; fi

cat >> mod_contentu2ab.ldif << EOF
dn: cn=$VARgivenname $VARsurename,ou=$VARou,dc=local,dc=net
objectclass:  top
objectclass:  inetOrgPerson
cn: $VARgivenname $VARsurename
sn: $VARsurename
givenName: $VARgivenname
$mail
$mobile
l: $VARl
o: $VARo
postalCode: $VARzip
st: $VARst
street: $VARstreet
$telephoneNumber
$pager


EOF
 done < var_ldap_users2addressbook.csv
 ldapadd -x -c -D cn=admin,dc=local,dc=net -W -f mod_contentu2ab.ldif
}


Vielleicht hilft es ja jemand.

6

21.09.2017, 16:36

Genau die if..then..else Schleifen könnten durch die "Parameter Expansion" eingespart werden. Was du als Ersatzwert einträgst ist eigentlich deine Sache. "none" war nur ein Beispiel, deshalb der Hinweis auf die man-page.
telephoneNumber: ${VARphone1:=#} geht genauso gut.

Du musst lediglich sicherstellen, daß das Script von bash ausgeführt wird. Bei Ubuntu ist (war früher) dash die default shell. Die versteht das glaube ich, nicht.

Trotzdem danke für die Anregung!
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl