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_change
sollte 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_change
nur die notwendigen Änderungen durchführen
Die Gründe für die Trennung dieser Bedenken sind:
- Sie können separat testen, ob
dhclient
korrekt 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_change
ausfü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