Wie Wouter kommentierte, scheint Ihr bestehendes Setup bereits ziemlich anständig zu sein.
Wenn Sie etwas weniger abhängiges von dhclient wollen , könnten Sie sich die vielen dynamischen DNS-Clients ansehen, die in Debian verpackt sind.
Beispiel:ddclient kann auf DHCP-Änderungen reagieren oder einfach eine Ethernet-Schnittstelle überwachen; Wenn sich die IP-Adresse ändert (und nur dann), kann es einen dynamischen DNS-Eintrag aktualisieren (bei einer beliebigen Anzahl von Anbietern) sowie ein separates Skript ausführen (das beide Ihre Anwendungsfälle abdecken würde).
Ich schlage vor, Ihre Lösung nach dem Prinzip der Trennung von Bedenken weiter zu vereinfachen/aufzuteilen:
- ein Skript
/etc/dhcp/dhclient-exit-hooks.d/trigger_on_ip_changesollte nur entscheiden, ob eine Aktion durchgeführt werden muss, und die Aktion auf ein separates Skript verschieben/usr/local/bin/act_on_ip_change - das Skript
/usr/local/bin/act_on_ip_changenur die notwendigen Änderungen durchführen
Die Gründe für die Trennung dieser Bedenken sind:
- Sie können separat testen, ob
dhclientkorrekt auslöst (ohne während des Debuggens tatsächlich irgendetwas auf Ihrem System zu ändern) - Sie können die „Änderung“ testen, ohne dass Sie Ihre IP erneuern müssen (und somit potenziell verlieren)
- Sie können
/usr/local/bin/act_on_ip_changeausführen bei Bedarf manuell - die Teile sind viel einfacher zu verstehen
Kurz gesagt, ich würde vorschlagen, dies in /etc/dhcp/dhclient-exit-hooks.d/trigger_on_ip_change_action zu haben :
# based on /etc/dhcp/dhclient-exit-hooks.d/debug
if [ "$reason" = "BOUND" -a "$old_ip_address" != "$new_ip_address" ]; then
/usr/local/bin/act_on_ip_change
fi