Berikut isi dari /etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart
Dan sshstart
adalah skrip dengan yang berikut di dalamnya:
curl something something darkside send a file over ftps in the background &
/usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 [email protected] -p 8080
Ketika mesin reboot, curl
perintah dijalankan beberapa kali, file berakhir 2 atau 3 kali pada server ftp dan ketika saya melihat proses sepertinya ada beberapa contoh autossh berjalan ... Tidak yakin apakah ini bagaimana autossh melakukan sesuatu atau tidak, tetapi pastinya curl tidak boleh mengunggah file beberapa kali.
Firasat saya adalah bahwa seluruh sshstart
skrip dijalankan beberapa kali tetapi saya tidak mengerti mengapa.
Saya mencoba mencari rincian tentang proses pengaturan jaringan saat boot tetapi yang saya temukan hanyalah informasi sintaks untuk file antarmuka.
Bisakah seseorang membantu?
Terima kasih.
--- Edit ---
Seperti yang disarankan di bawah ini, saya telah memodifikasi file antarmuka saya sebagai berikut (menghapus baris kosong di atas post-up):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up /etc/network/if-up.d/sshstart
Dan menambahkan baris berikut ke sshstart:
echo $(date)>>/run/shm/sshstart.log
Berikut adalah konten /run/shm/sshstart.log
setelah reboot:
Wed Oct 29 08:07:00 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Wed Oct 29 08:07:07 EDT 2014
Jadi sudah dijalankan 4 kali :( apa yang terjadi?
echo $(date)
agak canggung dan tidak langsung. Mungkin juga mengeja itu sebagaidate
. Mirip dengan Penggunaan Cat Award yang Tidak Berguna .Jawaban:
File dalam
/etc/network/if-up.d
sudah berjalan secara otomatis setiap kali antarmuka (antarmuka apa pun) muncul. Saat Anda menentukan skrip yang sama untuk dijalankan lagi dalampost-up
perintah eksplisit , Anda hanya menyebabkan skrip dijalankan lagi. Jadi dugaan saya adalah ini yang harus terjadi:lo
muncul (dengan variabel lingkunganIFACE=lo
) karena berada di/etc/network/if-up.d
.eth0
muncul (dengan variabel lingkunganIFACE=eth0
) untuk alasan yang sama.eth0
muncul (dengan variabel lingkunganIFACE
tidak disetel) karena Anda meminta ini dalampost-up
arahan.Saya tidak yakin dari mana keempat kalinya, tapi itu sudah tiga.
Anda perlu menemukan skrip di tempat lain dan menjalankannya sekali menggunakan
post-up
arahan, atau membiarkannya di tempat itu tetapi jangan menyebutkannya dalampost-up
arahan dan periksa nilai$IFACE
sehingga tidak melakukan apa-apa kecuali antarmuka yang diinginkan (eth0
) telah datang naik.sumber
--all
. Kedengarannya ada fitur untuk menjalankanif-up.d
skrip untuk terakhir kalinya dengan argumen ini untuk memberi sinyal bahwa semua antarmuka sekarang aktif, kalau-kalau beberapa skrip ingin mengambil tindakan setelah diketahui bahwa tidak ada lagi antarmuka yang tertunda. Itu menjelaskan keempat kalinya.Seperti yang dinyatakan oleh Celada,
/etc/network/if-up.d
skrip dijalankan untuk setiap antarmuka. Untuk menghindari duplikasi aturan, tambahkan saja:di bagian atas skrip Anda. Ini akan menyebabkan skrip segera keluar jika antarmuka bukan yang diinginkan.
sumber
Hapus baris kosong sebelum-
post-up
perintah. Ini seharusnya hanya menghubungkanpost-up
perintaheth0
. Selain itu pindahkan skrip Anda keluar dariif-up.d
folder. Script dalam folder itu dijalankan secara otomatis, tidak masalah jika didefinisikan sebagaipost-up
. Dalam kasus Anda itu akan berjalan tambahan kepost-up
perintah Anda .sumber