23 votes

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

Je travaille à la migration de mon serveur actuel vers un matériel plus récent, et à la migration de ubuntu karmic koala vers lucid lynx. Actuellement, j'utilise gw6c (compilé à partir du site web de gogo6, par opposition à la version issue des dépôts) pour obtenir un accès ipv6 pour mes systèmes. Sur le système karmic koala, j'ai utilisé un simple init.d script pour démarrer le client ipv6.

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

Je me suis dit que puisque 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 à partir de initctrl, mais apparemment cela ne démarre pas au démarrage. - son statut étant stop/waiting. Une idée de l'endroit où je me trompe, et de ce que serait l'argument approprié pour "démarrer sur" ?

EDIT : l'erreur exacte est 'init : gw6c main process (xxx) ended with status 8' suivie par le respawning du processus, avec xxx étant un PID je suppose. Je soupçonne également à moitié que c'est parce que gw6c démarre avant le réseau, et j'ai besoin que mon eth0 soit opérationnel avant que gw6c ne le soit.

28voto

Journeyman Geek Points 6949

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

0 votes

Oui, j'en ai récemment écrit quelques-uns qui utilisent net-device-up et net-device-down qui fonctionnent parfaitement.

0 votes

Je ne l'ai trouvé nulle part dans la documentation. Quelqu'un sur une liste de diffusion locale m'a aidé.

0 votes

C'était exactement ce que je recherchais. Ce n'est toujours pas dans la documentation upstart que j'ai pu trouver.

4voto

titaniumdecoy Points 1011

Placez un script commençant par gw6c en

/etc/network/if-up.d

Tous les scripts de ce dossier sont exécutés après l'apparition d'une interface. Si vous voulez qu'il soit exécuté uniquement lorsque eth0 s'ouvre, modifiez l'entrée eth0 dans le dossier

/etc/network/interfaces

et ajouter un appel au script

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

Je suggérerais également d'ajouter des scripts pré-down pour arrêter le tunnel avant que l'interface ne soit hors ligne.

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

0 votes

L'ancien script que j'ai posté fonctionne assez bien bien bien que je doive le redémarrer manuellement, si ma connexion se réinitialise d'elle-même - ceci est pour upstart, qui est par défaut sur lucid lynx.

1voto

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

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

0voto

Matt Sweeney Points 249

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X