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

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


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.


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! :) :) :)


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.