Apakah setiap skrip terletak di /etc/network/if-up.d dijalankan ketika sebuah antarmuka muncul?

12

Apakah semua skrip di /etc/network/if-up.d dijalankan saat antarmuka jaringan ditampilkan?

Jika demikian, untuk apa perintah post-up dalam file antarmuka?

Spig
sumber
1
Semua isi folder ".d", secara konvensional, dijalankan. Beberapa dari mereka sebenarnya membutuhkan ekstensi nama file ".sh". Semua file harus dapat dieksekusi.
kolypto

Jawaban:

14

Ya, secara umum skrip apa pun yang ditandai sebagai dapat dieksekusi dan ditempatkan dalam folder tersebut dijalankan File yang dimiliki terbatas pada sekumpulan nama tertentu karena run-parts digunakan.

Melakukan post-uphal yang sama seperti menggunakan up. Menempatkan skrip di if-up.d sama dengan menggunakan post-upskrip yang mengarah ke skrip atau perintah di tempat lain. Biasanya Anda akan menggunakan up | post-up ketika Anda hanya perlu menjalankan satu perintah untuk satu antarmuka. Ketika Anda memiliki sesuatu yang lebih kompleks, Anda akan membuat skrip.

antarmuka manusia

...
up command

post-up command
      Run  command  after  bringing the interface up.  If this command
      fails then ifup aborts, refraining from marking the interface as
      configured  (even  though it has really been configured), prints
      an error message, and exits with status 0.   This  behavior  may
      change in the future.
...
There  exists  for  each  of  the  above  mentioned options a directory
/etc/network/if-<option>.d/ the scripts in which are run (with no argu-
ments) using run-parts(8) after the option itself has been processed.

man run-parts

run-parts  runs  all  the  executable  files  named  within constraints
described below,

If  the  --lsbsysinit  option  is not given then the names must consist
entirely of upper and lower  case  letters,  digits,  underscores,  and
hyphens.
...
Files are run in the lexical sort  order  of  their  names  unless  the
--reverse  option  is given, in which case they are run in the opposite
order.
Sakit kepala
sumber
1
Jadi jika Anda ingin skrip dijalankan hanya setelah antarmuka menyala dan perlu barang-barang di folder if-up.d harus siap, Anda juga harus menamainya sehingga akan jatuh dalam urutan leksikal setelah perintah yang Anda butuhkan untuk beroperasi , atau dimasukkan ke direktori lain dan jalankan melalui perintah post-up. Apakah itu benar?
Spig
1
Ya saya percaya begitu.
Zoredache
1
Jawaban terinci yang bagus. Bahkan 10 tahun kemudian, masih memberikan wawasan.
Xofo
Anda benar-benar harus membaca halaman manual run-parts secara menyeluruh untuk mengenali, bahwa bahkan skrip dengan nama file yang benar menggunakan ekstensi .sh tidak akan berjalan. Quote: "... itu akan banyak membantu jika ada informasi tentang melewatkan skrip karena sebuah titik. Saya kehilangan banyak waktu pemecahan masalah ... pernyataan '... nama-nama harus seluruhnya terdiri dari huruf besar dan kecil huruf, angka, garis bawah, dan tanda hubung. ' tidak cukup. Saya membacanya dua kali dan itu tidak membantu saya memahami di mana masalah saya. Harus ditulis secara eksplisit bahwa skrip dengan titik dilewati. "
ChrisW
Ini 'bug' adalah "tidak akan Perbaiki" di Debian: run-bagian tidak menjalankan script dengan ekstensi sh bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022
ChrisW