Come ha commentato Wouter, la tua configurazione esistente sembra già abbastanza decente.
Se vuoi qualcosa di meno dipendente da dhclient
, potresti dare un'occhiata ai molti client DNS dinamici impacchettati in Debian.
Ad esempio, ddclient
può reagire alle modifiche DHCP o semplicemente monitorare un'interfaccia Ethernet; quando l'indirizzo IP cambia (e solo allora), può aggiornare una voce DNS dinamica (su qualsiasi numero di provider), nonché eseguire uno script separato (che coprirebbe entrambi i tuoi casi d'uso).
Propongo di semplificare/suddividere ulteriormente la tua soluzione seguendo il principio della separazione delle preoccupazioni:
- uno script
/etc/dhcp/dhclient-exit-hooks.d/trigger_on_ip_change
dovrebbe solo decidere se è necessario intraprendere un'azione e rinviare l'azione a uno script separato/usr/local/bin/act_on_ip_change
- lo script
/usr/local/bin/act_on_ip_change
dovrebbe eseguire solo le modifiche necessarie
Le ragioni per separare queste preoccupazioni sono:
- puoi verificare separatamente se
dhclient
si sta attivando correttamente (senza effettivamente modificare nulla sul tuo sistema durante il debug) - puoi testare il "change making" senza la necessità di rinnovare (e quindi potenzialmente perdere) il tuo IP
- puoi eseguire
/usr/local/bin/act_on_ip_change
manualmente in caso di necessità - le parti sono molto più facili da capire
In breve, suggerirei di avere questo in /etc/dhcp/dhclient-exit-hooks.d/trigger_on_ip_change_action
:
# 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