Eu preciso verificar com um script, se eth0
está configurado. Nesse caso, o script não fará nada. Caso contrário, ele começará wlan0
. (Eu não quero os dois eth0
e wlan0
estar acordado ao mesmo tempo).
Qual seria a maneira mais fácil de verificar, se eth0
já está ativo?
Estou usando o Debian Wheezy
ESCLARECIMENTO:
Gostaria de verificar não apenas se o cabo eth0
está conectado, mas também se a interface está configurada (ou seja, tem um conjunto de IP estático ou recebeu um IP de DHCP). Se o cabo estiver conectado, mas eth0
não estiver configurado corretamente, quero iniciarwlan0
linux
networking
user1968963
fonte
fonte
cat /sys/class/net/ | grep eth0
devo fornecer dados facilmente analisáveis. Você também pode fazersudo ethtool eth0 | grep Link
Respostas:
Você pode fazer isso de várias maneiras. Aqui está um exemplo:
fonte
/sys/class/net/eth0/carrier
, para verificar se há um sinal, mas ainda não pode ter uma concessão de DHCP, no entanto, etc.Se nada for exibido, sua interface estará inativa
fonte
Então aqui nós
grep
aip
ferramenta onipresentestdout
uma linha que contém a nossa interface de interesse e a frase "state UP" (obrigado a @Lekensteyn por apontar a necessidade de um pouco mais de especificidade do que apenasUP
). Usamos o argumentoa
como o formato abreviadoaddress
e isso deve ser suficiente para obter uma lista de todas as placas de rede configuradas no sistema.Uma vantagem do uso
ip
pode ser que ele realmente deve estar disponível em qualquer lugar - é como eu geralmente configuro os dispositivos de rede do meu telefone Android, por exemplo.o
:colons
são usados para evitar correspondências parciais - dessa forma, garantimos uma correspondência paraeth0
, ao contrário de umsomeothereth0
ou de outra forma possíveleth007
.Obrigado @RaphaelAhrens por me sugerir a correção e explicar minha solução.
EDITAR:
Para lidar com os requisitos atuais, você pode:
O texto acima apenas imprimirá um endereço IP do CIDR se o seu destino
$if
estiver em UP, conectado e tiver um. Para o ipv6, a solução é tão simples com apenas pequenas modificações.Se você não gostar,
sed
poderá obter resultados semelhantes com outro|pipe ... grep
e adicionar uma-A
opção de contexto à primeiragrep
- mas eu gostosed
.fonte
UP
, se o dispositivo é para cima, mas não é ligado por cabo:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Você também pode especificar o dispositivo para evitar falsos positivos:ip addr show dev eth0
.Os outros métodos não funcionam, mas este funciona (pelo menos no Ubuntu):
fonte
ip route
no Debian Stretch.