Inicie o script de inicialização apenas quando a interface de rede estiver ativa

1

Eu tenho um servidor de mídia sem cabeçalho usando o mpd em execução no gentoo. O Mpd está configurado para iniciar na inicialização (e eu também não tenho os scripts rc rodando em paralelo), mas infelizmente o mpd não será iniciado se não puder ser ligado a uma interface. Eu tentei dar a minha lan sem fio um endereço IP estático, mas ocasionalmente o mpd não é iniciado porque a placa wlan não está associada ao ponto de acesso (estou usando o wpa_supplicant).

Agora, quando o ssh inicia, é muito bom esperar que a interface apareça. Mas mesmo com um pouco de escavação eu sou incapaz de descobrir como isso é feito.

Meu hack horrível seria para o script mpd apenas esperar o tempo "suficiente" para a placa wlan se associar, mas isso não funcionaria em todas as circunstâncias.

Alguém tem alguma indicação?

NB: Perguntas relacionadas que não respondem à minha pergunta (mas podem ser úteis para os outros estão aqui):

run-a-script-when -conectada a uma rede sem fio no Linux e linux-how-to-start- skype-or-other-program-only-when-im-online

    
por RobS 12.11.2009 / 13:02

4 respostas

2

Em scripts de inicialização do gentoo, (/etc/init.d/mpd no seu exemplo) deve haver um

 depend() { ... }

seção perto do topo. É assim que o init acaba determinando a ordem de inicialização. Você deve colocar um requisito para que a rede termine antes de iniciar o mpd lá. Acho que a linha é

 need net

Verifique para ver o que está na seção de dependência em /etc/init.d/sshd. A mesma linha provavelmente funcionará se você adicioná-lo ao script de inicialização do mpd.

    
por 14.11.2009 / 06:05
1

Uma abordagem geral seria tentar iniciar o mpd em um loop, até que ele seja iniciado com êxito. Acredito que o mpd normalmente lançaria um determinado código de saída (que você pode capturar em seu script de inicialização) quando não puder ser iniciado por alguns motivos.

    
por 14.11.2009 / 09:44
0

De /etc/wpa_supplicant/ifupdown.sh :

# This file is executed by ifupdown in pre-up, post-up, pre-down and
# post-down phases of network interface configuration. It allows
# ifup(8), and ifdown(8) to manage wpa_supplicant(8) and wpa_cli(8)
# processes running in daemon mode.

Por volta da linha 144 (na minha cópia) do script, parece que ele faz as operações de post-up - você deve conseguir colocar o seu MPD de lançamento aqui, a menos que alguém consiga pensar em um lugar melhor.

    
por 12.11.2009 / 14:51
0

Uma das respostas no primeiro link que você deu sugere colocar um script em /etc/network/if-up.d , que é o que eu sugiro para você. Você já tentou isso?

    
por 12.11.2009 / 14:53