ip link show
, por padrão, mostra todas as interfaces, use ip link show up
para mostrar apenas as interfaces em execução. Você poderia usar filtros para obter a diferença.
Eu estou tentando identificar NICs em ~ 20 servidores remotos (2-6 NICs em cada servidor). Para começar, quero identificar os que estão prontos para uso e os gratuitos. Como posso verificar o estado da mídia física? Conheço algumas maneiras, incluindo ifconfig|grep RUNNING
, ethtool
, cat /sys/class/net/eth0/carrier
, mas todas elas exigem que a interface esteja ativa. Eu não quero trazer todas as interfaces para cima. Não tenho certeza porque, mas eu não gosto de ter ativado, mas não as interfaces configuradas na rede. Existe uma maneira de evitar isso?
Ou estou errado e não há nada de ruim em todas as interfaces estarem ativas (e não configuradas)? Mesmo se eles estiverem conectados?
Aqui está meu script para atualizar rotas padrão com base no estado da conexão em realtime . (corre em segundo plano)
trabalha com múltiplas interfaces, defino prioridades
nos arquivos /tmp/${iface}.metric
, a interface conectada "melhor" será usada para rotear o tráfego padrão.
#!/bin/sh
/sbin/ip monitor link | while read -r line
do
iface=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*//p')
state=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*//p')
if [ "$iface" != "" ] ; then
echo "$iface is $state"
if [ -f /tmp/${iface}.metric ] ; then
echo "updating default route for ${iface}"
if [ "$state" = "DOWN" ] ; then
ip route del default dev "${iface}"
else
ip route add default dev "${iface}" metric 'cat /tmp/${iface}.metric'
fi
fi
fi
done
ip link show exibe o sinalizador "LOWER_UP" para indicar que o cabo está conectado. Você também pode verificar por / sys / class / net / eth * / operstate ou operadora. No entanto, todos eles funcionam apenas para uma interface com um endereço IP vinculado a ele.
Tags networking ethernet linux