script kaya baru: menjalankan tugas setelah jaringan naik

23

Saya sedang bekerja untuk memindahkan pengaturan server saya saat ini ke perangkat keras yang lebih baru, dan bermigrasi dari ubuntu karmic koala ke lynx lucx. Saat ini saya menggunakan gw6c (dikompilasi dari situs gogo6, bukan versi dari repositori) untuk mendapatkan akses ipv6 untuk sistem saya. Pada sistem koala karma, saya menggunakan skrip init.d sederhana untuk memulai klien ipv6

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

Saya pikir karena ini berjalan di runlevel apa pun, itu harus diterjemahkan

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

ini berfungsi dengan baik dimulai dari initctrl, tetapi tampaknya gagal untuk memulai ketika boot. - statusnya makhluk berhenti / menunggu. Ini bekerja dengan baik (dan respawn) ketika memulai sebaliknya. Setiap ide tentang di mana saya salah, dan apa yang akan menjadi argumen 'mulai pada' yang sesuai?

EDIT: kesalahan yang sebenarnya adalah 'init: gw6c proses utama (xxx) berakhir dengan status 8' diikuti oleh proses respawning, dengan xxx menjadi PID saya curiga. Saya juga setengah curiga ini menyebabkan gw6c mulai sebelum jaringan, dan saya perlu eth0 saya sebelum gw6c adalah

Journeyman Geek
sumber

Jawaban:

27

Tampaknya

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

tampaknya bekerja

Journeyman Geek
sumber
Ya saya baru saja menulis beberapa yang menggunakan net-device-up dan net-device-down yang bekerja dengan sempurna.
Andy Shellam
saya tidak menemukannya di mana pun dalam dokumentasi. seseorang di sebuah mailing list lokal membantu saya keluar
pekerja harian Geek
Ini persis apa yang saya cari. Masih belum ada dalam dokumentasi pemula yang dapat saya temukan.
Nathan
4

Tempatkan skrip mulai gw6c di

/etc/network/if-up.d

Semua skrip di folder itu dijalankan setelah antarmuka muncul. Jika Anda hanya ingin menjalankannya ketika eth0 muncul kemudian edit entri eth0 di

/etc/network/interfaces

dan tambahkan panggilan ke skrip

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

Saya juga menyarankan menambahkan skrip pra-turun untuk mematikan terowongan sebelum antarmuka menjadi offline.

Setelah Anda melakukan itu dan menemukan implementasi yang berhasil, kirim kembali ke sini agar saya dapat menggunakannya. Saya punya gw6c di laptop saya tapi sejauh ini saya malas mengotomasinya.

Haakon
sumber
Skrip yang saya posting sebelumnya berfungsi dengan baik - meskipun saya harus me-restart secara manual, jika koneksi saya reset sendiri - ini untuk pemula, yang merupakan default pada lynx lynx.
Journeyman Geek
1

Terima kasih "The Journeyman geek" :) Anda menghemat banyak waktu. Saya berkelahi dengan skrip /etc/init.d/gw6c, mencoba beberapa pengaturan waktu dengan "sysv-rc-conf -p" dan bertanya-tanya mengapa itu tidak berfungsi (alias WTF?).

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

Script yang sedikit dimodifikasi ("runlevel" dan exec) berhasil! :) :) :)


sumber
0

Dari sini: http://upstart.ubuntu.com/cookbook/#single-job-instance-running-without-pid

description     "Uncomplicated firewall"

# Make sure we start before an interface receives traffic
start on (starting network-interface
          or starting network-manager
          or starting networking)

stop on runlevel [!023456]

console output

pre-start exec /lib/ufw/ufw-init start quiet
post-stop exec /lib/ufw/ufw-init stop
Matt Sweeney
sumber