No momento, estou escrevendo um script bash (para o Nagios) e gostaria de poder detectar se placas de rede específicas estão ativas ou não.
Meu melhor palpite é fazer algo assim:
ifconfig eth0 | grep UP | wc -l
ou:
ethtool eth0 | grep "Link detected: yes" | wc -l
As duas maneiras confiáveis de teste são / se a placa de rede está ativa ou há uma opção melhor? Talvez haja uma bandeira em ethtool
que fará exatamente o que eu quero?
fonte
Verifique se a interface está ativa:
Verifique se tem algum endereço IPv4 atribuído:
Em geral,
grep | wc -l
deve ser substituído porgrep -c
se você quiser a contagem de partidas.Ou
grep -qs
se você quiser apenas "correspondência / sem correspondência" com base no código de saída:if stuff | grep -qs stuff; then ... fi
fonte
o
show
comando de iproute-3.14.0-2 tem esta opção:Então, se você correr
ip link show eth0 up
e a interface está inativa, a saída estará vazia.Para verificar isso, veja a pergunta "teste se um comando retorna uma string ou nada em bash" do estouro de pilha. Basicamente, algo assim deveria fazer o truque:
Ele sai com um status 0 se a eth0 estiver ativa.
fonte
eu acho que
link detected…
não é o suficiente. Você também deve grep para oinet addr
porque mesmo que um link possa detectar a partir do switch, a NIC pode não ter um endereço IP válido.fonte