scripts iniciados: execute uma tarefa após o funcionamento da rede

23

Estou trabalhando para mudar minha configuração atual do servidor para um hardware mais recente e migrar do ubuntu karmic koala para o lucid lynx. Atualmente, estou usando o gw6c (compilado no site gogo6, em oposição à versão dos repositórios) para obter acesso ipv6 para meus sistemas. No sistema karmic koala, 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

Achei 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 iniciado a partir do initctrl, mas aparentemente falha ao iniciar quando é inicializado. - seu status sendo parado / aguardando. O problema é que, quando o problema é resolvido, o problema é resolvido e o problema não é resolvido, pois o problema é resolvido.

EDIT: o erro exato é 'init: gw6c main process (xxx) terminou com o status 8' seguido pelo processo reaparecendo, com xxx sendo um PID suspeito. Também estou meio suspeitando que isso seja porque o gw6c é iniciado antes da rede, e eu preciso do meu eth0 antes do gw6c

Journeyman Geek
fonte

Respostas:

27

Pelo visto

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

Journeyman Geek
fonte
Sim, eu escrevi recentemente alguns que usam net-device-up e net-device-down que funcionam perfeitamente.
Andy Shellam 28/02/10
não encontrei em nenhum lugar da documentação. alguém em uma lista local me ajudou
Journeyman Geek
Era exatamente isso que eu estava procurando. Ainda não está na documentação inicial em nenhum lugar que eu pudesse encontrar.
Nathan
4

Coloque um script iniciando gw6c em

/etc/network/if-up.d

Todos os scripts nessa pasta são executados após o surgimento de uma interface. Se você deseja que ele seja executado apenas quando 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

Eu também sugeriria adicionar scripts pré-down para desligar o túnel antes que a interface fique offline.

Depois de fazer isso e encontrar uma implementação que funcione, publique-a aqui para que eu possa usá-lo. Eu tenho o gw6c no meu laptop, mas até agora tenho preguiça de automatizá-lo.

Haakon
fonte
O script anterior que publiquei funciona muito bem - embora eu precise reiniciá-lo manualmente, se minha conexão se redefinir - isso é para iniciantes, que é o padrão no lucid lynx.
Journeyman Geek 28/02
1

Obrigado "The Journeyman geek" :) 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

O script levemente modificado ("runlevel" e comando exec) fez o trabalho! :) :) :)


fonte
0

A partir daqui: 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
fonte