Das OPSI-Init-Skript schreibt wohl schon nach
/var/lib/dhcp/dhclient.leases, hat aber wohl noch keine Antwort parat.
Wo kommt also die
dhclient.eth0.leases her?
Wenn ich nun in den laufenden Prozessen nachsehe, finde ich:
Code: Alles auswählen
dhclient eth0 -lf /var/lib/dhcp/dhclient.leases
dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Ersterer Prozess ist der vom OPSI-Init gestartete.
(Killt man letzteren diesen, hat die
dhclient.leases irgendwann den richtigen Inhalt.)
Verantwortlich fuer
dhclient.eth0.leases ist der Abschnitt
Code: Alles auswählen
try:
execute(u'ifdown -a --exclude=lo')
except:
pass
try:
execute(u'ifup -a --exclude=lo')
except:
pass
in der
master.py, genau genommen das
ifup. Es startet in jedem Fall
Code: Alles auswählen
dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
sofern in der
/etc/network/interfaces fuer eth0 dhcp konfiguriert ist.
Daher waere es m.E. wohl zweckmaessiger in der
etc/init.d/opsi wieder
zu verwenden.
Code: Alles auswählen
# diff etc/init.d/opsi.org etc/init.d/opsi
185,186c185,187
< dhclient $device -lf /var/lib/dhcp/dhclient.leases
< # trying dhclient instead of: ifup $device
---
> # dhclient $device -lf /var/lib/dhcp/dhclient.leases
> # ...trying dhclient instead of: ifup $device
> ifup $device
...allerdings muessen dann in der master.py wieder die
'/var/lib/dhcp/dhclient.'+device+'.leases' geparst werden.
Gruesse,
Jens