Univention Bugzilla – Bug 28209
DHCP-Einträge werden bei Join nicht erstellt
Last modified: 2012-12-12 21:09:22 CET
Joint man einen managedclient oder mobileclient per univention-join, so werden die DHCP-Einträge nicht erstellt. Ursache ist ein Fehler in univention-server-join: Anhand des Domainnamen wird zwar die DN des DHCP-Service-Eintrag herausgesucht, aber diese wird 1:1 beim anschließenden Anlegen des Rechner-Objekts an "--set dhcpEntryZone=$dn" übergeben. Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC", zumindest wird solch ein Eintrag zurückgeliefert, wenn man den Rechner per Web-UMC anlegt und sich anschließend auf der CLI ausgeben lässt: # udm computers/managedclient list | grep dhcpEntryZone dhcpEntryZone: cn=phahn.dev,cn=dhcp,dc=phahn,dc=dev 10.200.17.41 52:54:00:fd:97:e9 PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für computers/managedclient und computers/mobileclient eingetragen, obwohl das Attribut von allen computers/*-Klassen unterstützt wird. --- a/branches/ucs-3.1/ucs/management/univention-join/univention-server-join +++ b/branches/ucs-3.1/ucs/management/univention-join/univention-server-join @@ -220,16 +220,9 @@ create_entry () { - if [ -n "$MAC" -a -n "$dhcpEntry" -a "$module" = "computers/managedclient" ]; then - args+=(--set mac="$MAC" --set dhcpEntryZone="$dhcpEntry") - elif [ -n "$MAC" -a -n "$dhcpEntry" -a "$module" = "computers/mobileclient" ]; then - args+=(--set mac="$MAC" --set dhcpEntryZone="$dhcpEntry") - elif [ -n "$MAC" ]; then - args+=(--set mac="$MAC") - fi + if [ -n "$MAC" ]; then + args+=(--set mac="$MAC") + fi + # DHCP + if [ -n "$dhcpEntry" ] && [ -n "$IP" ] && [ -n "$MAC" ]; then + args+=(--set dhcpEntryZone="$dhcpEntry $IP $MAC") + fi
(In reply to comment #0) > Joint man einen managedclient oder mobileclient per univention-join, so werden > die DHCP-Einträge nicht erstellt. > > Ursache ist ein Fehler in univention-server-join: Anhand des Domainnamen wird > zwar die DN des DHCP-Service-Eintrag herausgesucht, aber diese wird 1:1 beim > anschließenden Anlegen des Rechner-Objekts an "--set dhcpEntryZone=$dn" > übergeben. Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC", zumindest > wird solch ein Eintrag zurückgeliefert, wenn man den Rechner per Web-UMC anlegt > und sich anschließend auf der CLI ausgeben lässt: Da hat sich die Syntax in 3.0 geändert. > # udm computers/managedclient list | grep dhcpEntryZone > dhcpEntryZone: cn=phahn.dev,cn=dhcp,dc=phahn,dc=dev 10.200.17.41 > 52:54:00:fd:97:e9 > > > PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für > computers/managedclient und computers/mobileclient eingetragen, obwohl das > Attribut von allen computers/*-Klassen unterstützt wird. Das sollten wir IMHO auch nicht ändern.
(In reply to comment #1) > (In reply to comment #0) > > Das Feld erwartet allerdings ein 3-Tupel "$dn $IP $MAC". > > Da hat sich die Syntax in 3.0 geändert. Das wurde korrigiert. > > PS: Der DHCP-Eintrag wird derzeit in univention-server-join nur für > > computers/managedclient und computers/mobileclient eingetragen, obwohl das > > Attribut von allen computers/*-Klassen unterstützt wird. > > Das sollten wir IMHO auch nicht ändern. Das wurde so belassen. svn34834, univention-join_5.0.1-1.380.201208141908 Changelog: svn14314 \item DHCP entries are created again for managed and mobile clients (\ucsBug{27209}).
Nach Installation von python-univention-directory-manager-legacy-ucd-tcs auf dem Master und Join eines UCS 2.4-4 Systems ist kein dhcpEntryZone-Eintrag angelegt. Auch ein manueller Aufruf legt keinen DHCP-Eintrag an: ============================= root@master1:~# /usr/share/univention-join/univention-server-join -role client -hostname managed -domainname arucs31i5.qa -ip 10.200.8.24 -netmask 255.255.255.0 -binddn "uid=Administrator,cn=users,dc=arucs31i5,dc=qa" -bindpwfile "/tmp/tmp.ZIdzKlWipO" -mac 11:22:33:44:55:66 univention-server-join: joins a server to an univention domain copyright (c) 2001-2012 Univention GmbH, Germany ldap_dn="cn=managed,cn=computers,dc=arucs31i5,dc=qa" KerberosPasswd="cJH7ba5o" ============================= Im Code wird eine Variable dhcpEntry abgefragt, die nirgendwo gesetzt wird? ============================= # DHCP case "$module" in computers/managedclient|computers/mobileclient) if [ -n "$dhcpEntry" ] && [ -n "$IP" ] && [ -n "$MAC" ]; then args+=(--set dhcpEntryZone="$dhcpEntry $IP $MAC") fi ;; esac ============================= Ggf. diesen Bug schlicht auf wontfix setzen, weil nicht mehr relevant?
(In reply to comment #3) > Im Code wird eine Variable dhcpEntry abgefragt, die nirgendwo gesetzt wird? RTFS: univention-server-join:327 dhcpEntry="$(univention-directory-manager dhcp/service list \ --filter name="$DOMAINNAME" \ "${ADMINOPTIONS[@]}" | sed -ne 's/^DN: //p')" (In reply to comment #3) > Auch ein manueller Aufruf legt keinen DHCP-Eintrag an: WORKS-FOR-ME: service=$(udm dhcp/service list | sed -ne 's/^DN: //p;T;q') subnet=$(udm dhcp/subnet list --superordinate "$service" | sed -ne 's/^ subnet: //p;T;q') bash -x /usr/share/univention-join/univention-server-join \ -role mobileclient \ -hostname foo \ -domainname "$(ucr get domainname)" \ -ip "${subnet%.*}.$((2 + RANDOM % 252))" \ -netmask 255.255.255.0 \ -mac 01:02:03:04:05:06 \ -binddn "$(univention-ldapsearch -xLLL cn=Administrator dn | sed -ne 's/^dn: //p;T;q')" \ -bindpwfile <(echo -n univention) udm dhcp/host list \ --superordinate "$service" \ --filter host=foo
Changelog fehlt noch
Falsche Bugnummer: 2[7→8]209 ChangeLog: svn15636 \item DHCP entries are again created for managed and mobile clients (\ucsBug{28209}).
Created attachment 4815 [details] test_bug28209.sh Verified: * Das ganze funktioniert nur, wenn ein DHCP service existiert der den Domänennamen trägt.
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".