verificar se a interface eth0 está ativa (configurada)

25

Eu preciso verificar com um script se eth0 está configurado. Se assim for, o script não fará nada. Caso contrário, ele iniciará wlan0 . (Eu não quero que eth0 e wlan0 estejam ao mesmo tempo).

Qual seria a maneira mais fácil de verificar se eth0 já está funcionando?

Estou usando o Debian Wheezy

ESCLARECIMENTO:

Gostaria de verificar não apenas se o cabo em eth0 está conectado, mas se a interface está configurada (isto é, se ele possui um IP estático ou se recebeu um IP de DHCP). Se o cabo estiver conectado, mas eth0 não estiver configurado corretamente, quero iniciar wlan0

    
por user1968963 26.03.2014 / 10:01

3 respostas

38

Você pode fazer isso de várias formas. Aqui um exemplo:

$ cat /sys/class/net/eth0/operstate
up
    
por 26.03.2014 / 10:13
4
ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing 

Então, aqui nós grep são onipresentes ip da ferramenta stdout para uma linha que contém tanto a nossa interface de interesse como a frase "estado UP" (graças a @ Lekensteyn por apontar a necessidade de um pouco mais de especificidade do que apenas UP ). Usamos o argumento a como forma resumida para address e isso deve ser suficiente para obter uma listagem de todas as placas de rede configuradas no sistema.

Uma vantagem de usar ip pode ser que esteja disponível em todos os lugares - é como eu normalmente configuro os dispositivos de rede do meu telefone Android, por exemplo.

Os :colons são usados para evitar correspondências parciais. Dessa forma, garantimos uma correspondência para eth0 em oposição a um possível someothereth0 ou eth007 .

Obrigado @RaphaelAhrens por me empurrar para a correção e explicar minha solução.

EDITAR:

Para lidar com os requisitos atuais, você pode:

ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*//p}'

O texto acima somente imprimirá um endereço IP do CIDR se o seu destino $if estiver UP, conectado e tiver um. Para o ipv6, a solução é tão simples quanto apenas pequenas modificações.

Se você não gostar de sed , poderá obter resultados semelhantes com outro |pipe ... grep e adicionar um contexto -A opção para o primeiro grep - mas gosto de sed .

    
por 26.03.2014 / 10:12
3
ip a show ethX up

Se nada for exibido, sua interface está inativa

    
por 01.07.2016 / 16:32