Bug in udm gefunden?

german

#1

Hallo Forum,

Ich möchte automatisiert Clients anlegen. Das klappt auch gut für fast alle Clients, bis auf einen Client. Die Kommandozeile: (Domain, ip und mac sind hier geändert)

udm computers/ipmanagedclient create --dn 'cn=backup,cn=computers,dc=blah,dc=foo' --set name='backup' --set mac='00:21:de:ad:be:af' --set domain='blah.foo' --set ip='10.1.111.111 --set network='cn=default,cn=networks,dc=blah,dc=foo' --set dnsEntryZoneForward='zoneName=blah.foo,cn=dns,dc=blah,dc=foo 10.1.111.111' --set dnsEntryZoneReverse='zoneName=1.10.in-addr.arpa,cn=dns,dc=blah,dc=foo 10.1.111.111' --set dhcpEntryZone='cn=blah.foo,cn=dhcp,dc=blah,dc=foo 10.1.111.111 00:21:de:ad:be:af'

Frage: Ist die Syntax so prinzipiell richtig?

Wenn Ja:

Hier ist folgende Umgebung:

  • Es existiert hier ein Objekt ‘cn=backup,dc=blah,dc=foo’

  • Es existiert jedoch KEIN Objekt cn=backup,cn=computers,dc=blah,dc=foo

  • Die IP ist nicht vergeben

  • Die Mac ist nicht vergeben

  • Der Name ist nicht vergeben

  • Anlegen über Weboberfläche klappt ohne Probleme (identische Eingaben)

  • Anlegen über udm (cmd) funktioniert nicht, die Fehlermeldung wechselt bei jedem Aufruf:

Object exists: (mac)  00:21:de:ad:be:af[/code] oder [code]IP address is already in use: 10.1.111.111[/code] oder auch [code]Object exists: cn=backup,dc=blah,dc=foo

Was mich wundert ist (nach setzen von “ucr set directory/manager/cmd/debug/level=4”):
/var/log/univention/directory-manager-cmd.log:

02.05.16 14:40:34.018  LDAP        ( ALL     ) : add dn=cn=backup,dc=blah,dc=fooerr={'desc': 'Already exists'}

Wieso wird hier dn=cn=backup,dc=blah,dc=foo und nicht cn=backup,cn=computers,dc=blah,dc=foo versucht?

Bitte um Hilfe.
Gruß Lutz


#2

Moin,

Computernamen müssen in UCS (genauso wie User- und Gruppennamen) LDAP-weit eindeutig sein. Haben Sie sonst irgendwo ein Rechnerobjekt (egal welchen Typs) mit dem Namen »backup«?

Gruß,
mosu


#3

Servus,

wie ich im Ursprungspost schon schrieb, es existiert ein Objekt mit Namen “backup”:

dn: cn=backup,dc=blah,dc=foo objectClass: top objectClass: person cn: backup sn: backup

Ansonsten kann ich ldapweit nichts auf “backup” passendes finden, insbesondere nicht unter “cn=computers,dc=blah,dc=foo”.
Die Fehlermeldung von udm (siehe oben) scheint sich auch genau an diesem Objekt “dn: cn=backup,dc=blah,dc=foo” zu stören(!), obwohl ich versuche ein Objekt cn=backup,cn=computers,dc=blah,dc=foo anzulegen.

Dieses Verhalten von udm kann ich nicht verstehen.
Deshalb meine Bitte um Hilfe.

Gruß Lutz


#4

Moin,

Sorry, ich hatte Ihren Beitrag nicht gründlich genug gelesen.

Ihr Problem dürfte sein, dass –dn beim Anlegen komplett ignoriert wird. Die wird nur fürs Entfernen und Modifizieren benötigt.

Statt dessen wird der Ort benötigt, an dem das Objekt angelegt werden soll. Dieser wird mit –position angegeben. Fehlt dieses, so wird per Default die Base-DN des LDAPs genommen.

Da Sie aber direkt unterhalb der BaseDN bereits ein Objekt namens cn=backup haben, beißt sich das.

So sieht das dann beispielsweise aus:

[code][0 root@master ~] udm computers/ipmanagedclient create --position cn=computers,$(ucr get ldap/base) --set name=test-me --set ip=10.1.2.3
Object created: cn=test-me,cn=computers,dc=mbu-test,dc=intranet
[0 root@master ~] univention-ldapsearch cn=test-me dn

extended LDIF

LDAPv3

base <dc=mbu-test,dc=intranet> (default) with scope subtree

filter: cn=test-me

requesting: dn

test-me, computers, mbu-test.intranet

dn: cn=test-me,cn=computers,dc=mbu-test,dc=intranet

search result

search: 3
result: 0 Success

numResponses: 2

numEntries: 1[/code]

Beim Löschen brauchen Sie dann wie erwähnt die DN:

[0 root@master ~] udm computers/ipmanagedclient modify --dn cn=test-me,cn=computers,$(ucr get ldap/base) --set ip=10.4.5.6 Object modified: cn=test-me,cn=computers,dc=mbu-test,dc=intranet [0 root@master ~] udm computers/ipmanagedclient remove --dn cn=test-me,cn=computers,$(ucr get ldap/base) Object removed: cn=test-me,cn=computers,dc=mbu-test,dc=intranet

Gruß,
mosu


#5

Servus,

[quote=“Moritz Bunkus”]Ihr Problem dürfte sein, dass –dn beim Anlegen komplett ignoriert wird. Die wird nur fürs Entfernen und Modifizieren benötigt.

Statt dessen wird der Ort benötigt, an dem das Objekt angelegt werden soll. Dieser wird mit –position angegeben. Fehlt dieses, so wird per Default die Base-DN des LDAPs genommen.[/quote]

Genau das war es: Super, vielen Dank dafür!

Thema: “read the fine manual”… Ich bin wirklich nicht lesefaul, aber genau das habe ich so nirgends gefunden.
Kann ich das irgendwo nachlesen? Haben Sie einen Link, Handbuch, manpage für mich zur Hand?

Nochmal Danke!
Gruß Lutz


#6

Moin,

schön, dass es klappt :slight_smile:

Zu UDM gibt’s kein umfassendes Handbuch, aber was mir immer hilft, ist die Online-Hilfe: udm computers/ipmanagedclient --help listet gerade bei den Optionen zum Anlegen –dn eben nicht auf.

Gruß,
mosu