scripts upstart: execute uma tarefa depois que a rede subir

23

Estou trabalhando para migrar a configuração atual do meu servidor para um hardware mais novo e migrar do koala kármico do ubuntu para o lince lúcido. Atualmente estou usando gw6c (compilado do site gogo6, ao contrário da versão dos repositórios) para obter acesso ipv6 para os meus sistemas. No sistema koala cármico, usei o script init.d simples para iniciar o cliente ipv6

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

Eu percebi que, como isso é executado em qualquer nível de execução, ele deve ser traduzido para

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

isso funciona bem a partir do initctrl, mas aparentemente ele não inicia quando inicializa. - seu status é parar / esperar. Funciona bem (e reaparece) quando iniciado de outra forma. Alguma idéia de onde eu estou errado, e qual seria o argumento de 'começar' apropriado?

EDIT: o erro exato é 'init: gw6c processo principal (xxx) terminado com status 8' seguido pelo processo respawning, com xxx sendo um PID suspeito. Eu também estou meio que suspeitando que isso é porque o gw6c começa antes do networking, e eu preciso do meu eth0 antes do gw6c ser

    
por Journeyman Geek 28.02.2010 / 07:57

4 respostas

27

Aparentemente

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

parece funcionar

    
por 28.02.2010 / 09:54
4

Coloque um script iniciando gw6c em

/etc/network/if-up.d

Todos os scripts nessa pasta são executados depois que uma interface é exibida. Se você quer que ele seja executado quando o eth0 aparecer, edite a entrada eth0 em

/etc/network/interfaces

e adicione uma chamada ao script

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

Também sugiro adicionar scripts de pré-configuração para desligar o túnel antes que a interface fique off-line.

Depois de fazer isso e encontrar uma implementação que funcione, poste-a de volta aqui para que eu possa usá-la. Eu tenho gw6c no meu laptop, mas tenho sido tão preguiçoso para automatizá-lo.

    
por 28.02.2010 / 09:32
1

Obrigado "O geek Journeyman" :) Você me salvou muito tempo. Eu estava lutando com o script /etc/init.d/gw6c, tentando algumas temporizações com "sysv-rc-conf -p" e me perguntando por que ele não está funcionando (também conhecido como 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

Um script ligeiramente modificado ("runlevel" e exec) fez o trabalho! :) :):)

    
por 14.05.2010 / 22:24
0

daqui: link

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
    
por 06.12.2011 / 19:40