GNU/Linux >> Belajar Linux >  >> Linux

Metode untuk bertindak atas perubahan alamat IP dari ISP?

Seperti yang dikomentari Wouter, pengaturan Anda yang ada tampaknya sudah cukup baik.

Jika Anda menginginkan sesuatu yang kurang bergantung pada dhclient , Anda dapat melihat banyak klien DNS dinamis yang dikemas dalam Debian.

Misalnya, ddclient dapat bereaksi terhadap perubahan DHCP atau hanya memantau antarmuka Ethernet; ketika alamat IP berubah (dan hanya setelah itu), itu dapat memperbarui entri DNS dinamis (pada sejumlah penyedia), serta menjalankan skrip terpisah (yang akan mencakup kedua kasus penggunaan Anda).


Saya mengusulkan untuk lebih menyederhanakan/membagi solusi Anda mengikuti prinsip pemisahan masalah:

  • skrip /etc/dhcp/dhclient-exit-hooks.d/trigger_on_ip_change sebaiknya hanya memutuskan apakah tindakan perlu diambil dan menunda tindakan ke skrip /usr/local/bin/act_on_ip_change terpisah
  • skrip /usr/local/bin/act_on_ip_change sebaiknya hanya menjalankan perubahan yang diperlukan

Alasan memisahkan kekhawatiran tersebut adalah:

  • Anda dapat menguji secara terpisah apakah dhclient terpicu dengan benar (tanpa benar-benar mengubah apa pun di sistem Anda selama proses debug)
  • Anda dapat menguji "pembuatan perubahan" tanpa perlu memperbarui (dan berpotensi kehilangan) IP Anda
  • Anda dapat mengeksekusi /usr/local/bin/act_on_ip_change secara manual jika diperlukan
  • bagian-bagiannya jauh lebih mudah dipahami

Singkatnya, saya sarankan untuk memiliki ini di /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

Linux
  1. /usr/bin Vs /usr/local/bin Di Linux?

  2. Perbedaan Antara /opt Dan /usr/local?

  3. Apa yang dilakukan baris '!/bin/sh -e'?

  1. ./configure :/bin/sh^M :penerjemah yang buruk

  2. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  3. Ubah direktori dan jalankan file dalam satu perintah

  1. Apa perbedaan antara #!/usr/bin/env bash dan #!/usr/bin/bash?

  2. cmake --version menunjuk ke /usr/bin/cmake sementara cmake menunjuk ke /usr/local/bin

  3. Memindahkan /bin konten ke /usr/bin, mungkin untuk membatalkan?