ip link show
, por defecto muestra todas las interfaces, usa ip link show up
para mostrar solo las interfaces en ejecución. Podrías usar filtros para obtener la diferencia.
Aquí está mi secuencia de comandos para actualizar las rutas predeterminadas en función del estado de la conexión en tiempo real . (se ejecuta en segundo plano) funciona con múltiples interfaces, defino prioridades en el /tmp/${iface}.metric
archivos, la interfaz "mejor" conectada se utilizará para enrutar el tráfico predeterminado.
#!/bin/sh
/sbin/ip monitor link | while read -r line
do
iface=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\1/p')
state=$(echo $line | sed -ne 's/[^ ]* \([^ ]*\): .* state \([^ ]*\).*/\2/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