Answers:
ip link show
,默认情况下显示所有接口,用于ip link show up
仅显示正在运行的接口。您可以使用过滤器来获取差异。
ip addr show
即使增加了IP地址的输出。
ip link show
显示“ DOWN”。ip
报告的信息ifconfig
与/sys/class/net/
在任何情况下都相同,不是吗?您是否从中获得链接状态信息,ip
而不是/sys/class/net
从ifconfig
机器中获得链接状态信息?还是您获得有关/sys/class/net
(我得到/sys/class/net/eth0/carrier: Invalid argument
)处于关闭状态的接口的链接状态?
这是我的脚本,用于根据连接状态实时更新默认路由。(在后台运行)可用于多个接口,我在/tmp/${iface}.metric
文件中定义优先级,“最佳”连接接口将用于路由默认流量。
#!/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