scripts parvenus: exécuter une tâche après la mise en réseau

23

Je travaille à déplacer ma configuration de serveur actuelle vers un matériel plus récent et à migrer du koala ubuntu karmic vers le lynx lucide. Actuellement, j'utilise gw6c (compilé à partir du site Web de gogo6, par opposition à la version des référentiels) pour obtenir un accès ipv6 pour mes systèmes. Sur le système karmic koala, j'ai utilisé un simple script init.d pour démarrer le client ipv6

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

J'ai pensé que cela fonctionne à n'importe quel niveau d'exécution, cela devrait se traduire par

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

cela fonctionne bien démarré à partir d'initctrl, mais il ne semble pas démarrer au démarrage. - son statut étant arrêt / attente. Cela fonctionne bien (et réapparaît) lorsqu'il est démarré autrement.Toutes les idées sur où je vais mal, et quel serait l'argument de départ approprié?

EDIT: l'erreur exacte est 'init: processus principal gw6c (xxx) terminé avec le statut 8' suivi du processus de réapparition, xxx étant un PID i suspect. Je soupçonne également à moitié que c'est parce que gw6c démarre avant le réseautage, et j'ai besoin de mon eth0 avant que gw6c ne soit

Compagnon Geek
la source

Réponses:

27

Apparemment

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

semble fonctionner

Compagnon Geek
la source
Oui, je viens d'en écrire quelques-uns qui utilisent net-device-up et net-device-down qui fonctionnent parfaitement.
Andy Shellam
je ne l'ai trouvé nulle part dans la documentation. quelqu'un sur une liste de diffusion locale m'a aidé
Journeyman Geek
C'était exactement ce que je cherchais. Ce n'est toujours pas dans la documentation parvenu partout où j'ai pu trouver.
Nathan
4

Placez un script commençant par gw6c dans

/etc/network/if-up.d

Tous les scripts de ce dossier sont exécutés après l'apparition d'une interface. Si vous ne voulez l'exécuter que lorsque eth0 apparaît, modifiez l'entrée eth0 dans

/etc/network/interfaces

et ajoutez un appel au script

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

Je suggérerais également d'ajouter des scripts de pré-arrêt pour arrêter le tunnel avant que l'interface ne se déconnecte.

Une fois que vous avez fait cela et trouvé une implémentation qui fonctionne, postez-la ici afin que je puisse l'utiliser. J'ai gw6c sur mon ordinateur portable mais j'ai été jusqu'à présent paresseux pour l'automatiser.

Haakon
la source
L'ancien script que j'ai publié fonctionne plutôt bien - même si j'ai besoin de le redémarrer manuellement, si ma connexion se réinitialise - c'est pour le démarrage, qui est par défaut sur lucid lynx.
Journeyman Geek du
1

Merci "The Journeyman geek" :) Tu m'as fait gagner beaucoup de temps. Je me battais avec le script /etc/init.d/gw6c, essayant quelques timings avec "sysv-rc-conf -p" et me demandant pourquoi cela ne fonctionnait pas (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

Le script légèrement modifié ("runlevel" et commande exec) a fait le travail! :) :) :)


la source
0

À partir d'ici: 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
la source