script upstart: esegui un'attività dopo che la rete è salita


23

Sto lavorando per spostare la mia attuale configurazione del server su hardware più recente e migrare da Ubuntu Karmic Koala a Lince lucida. Attualmente sto usando gw6c (compilato dal sito web gogo6, al contrario della versione dei repository) per ottenere l'accesso ipv6 per i miei sistemi. Sul sistema karmico koala, ho usato il semplice script init.d per avviare il client ipv6

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

Ho pensato che dato che funziona su qualsiasi runlevel, dovrebbe tradursi in

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

funziona perfettamente a partire da initctrl, ma a quanto pare non si avvia all'avvio. - il suo stato è stop / in attesa. Funziona bene (e riappare) quando è iniziato diversamente. Qualche idea su dove sto sbagliando e quale sarebbe la discussione appropriata per iniziare?

EDIT: l'errore esatto è 'init: il processo principale di gw6c (xxx) è terminato con lo stato 8' seguito dal processo di rigenerazione, con sospetto che PID sia xxx. Sto anche sospettando che ciò sia dovuto al fatto che gw6c si avvia prima della rete e ho bisogno di eth0 prima che gw6c sia

Risposte:


27

Apparentemente

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

sembra funzionare


Sì, ne ho appena scritti alcuni che usano net-device-up e net-device-down che funzionano perfettamente.
Andy Shellam,

non l'ho trovato da nessuna parte nella documentazione. qualcuno su una mailing list locale mi ha aiutato
Journeyman Geek,

Questo era esattamente quello che stavo cercando. Non è ancora nella documentazione iniziale che ho trovato.
Nathan,

4

Inserisci uno script che avvia gw6c in

/etc/network/if-up.d

Tutti gli script in quella cartella vengono eseguiti dopo che viene visualizzata un'interfaccia. Se vuoi che venga eseguito solo quando viene visualizzato eth0, modifica la voce eth0 in

/etc/network/interfaces

e aggiungi una chiamata allo script

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

Suggerirei inoltre di aggiungere script pre-down per arrestare il tunnel prima che l'interfaccia diventi offline.

Una volta che lo fai e trovi un'implementazione che funziona, pubblicala di nuovo qui in modo che io possa usarla. Ho gw6c sul mio laptop ma sono stato finora troppo pigro per automatizzarlo.


Il precedente script che ho pubblicato funziona abbastanza bene, anche se ho bisogno di riavviarlo manualmente, se la mia connessione si ripristina da sola, questo è per upstart, che è predefinito sulla lince lucida.
Journeyman Geek,

1

Grazie "The Journeyman geek" :) Mi hai fatto risparmiare un sacco di tempo. Stavo combattendo con lo script /etc/init.d/gw6c, provando alcuni tempi con "sysv-rc-conf -p" e mi chiedevo perché non funzionasse (aka 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

Lo script leggermente modificato ("runlevel" e comando exec) ha fatto il lavoro! :) :) :)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.