Localizando quais pacotes controlam interfaces de rede?

1

Eu tenho um pacote debian que estou executando na inicialização.

Estou usando o upstart e acho que preciso adicionar uma dependência à configuração do upstart:

start on someProgram

Não sei qual programa, mas não estou usando network-manager , está desativado. Eu estou fazendo algo assim:

ethernet=$(ifconfig -a | grep Ethernet | grep ^e | cut -d' ' -f1)
wifi=$(ifconfig -a | grep wl | cut -d' ' -f1)
ping -I $ethernet -c 1 8.8.8.8 \
  || ping -I $wifi -c 1 8.8.8.8 \
  || echo "not online"

O problema é ifconfig nem sempre mostra a interface $wifi porque o programa foi ativado muito cedo no processo de inicialização.

Também ping -I $ethernet -c 1 8.8.8.8 falha quando deve ser bem sucedido.

Se eu faço sleep 30 then ping funciona bem.

Alguém sabe o pacote que eu deveria estar esperando para que isso funcione como esperado?

Estou usando o Ubuntu 14.04 em um dispositivo incorporado.

3.0.36+ #16 SMP PREEMPT Tue Oct 31 19:17:57 EDT 2017 armv7l armv7l armv7l GNU/Linux

Eu achei que tinha uma resposta:

I'm finding that the network interfaces can be referenced directly instead of a package:

start on (local-filesystems and net-device-up IFACE!=lo)

I'd still like to improve it slightly for my case.

Since I'd rather wait for wlan than eth but I'm not sure if I can use a wild card like: IFACE=wlan*

Mas parece que isso não espera que a interface esteja disponível para ifconfig , mas espera que essa interface tenha uma conexão ativa com a Internet.

    
por Philip Kirkbride 26.01.2018 / 16:13

1 resposta

0

Acabei de encontrar uma solução alternativa usando um script de pré-inicialização do upstart:

pre-start script
    while [ -z "$(ifconfig | grep wlan)" ]
    do
        sleep 1
    done
    sleep 5
end script
    
por 26.01.2018 / 18:27