检查网线是否插好,但接口未打开

检查网线是否插好,但接口未打开

我正在尝试识别 ~20 个远程服务器上的 NIC(每台服务器上有 2-6 个 NIC)。首先,我想确定那些可以使用的和免费的。如何检查物理介质的状态?我知道一些方法,包括ifconfig|grep RUNNING,,,但ethtool它们cat /sys/class/net/eth0/carrier都要求接口打开。我不想调出所有接口。不知道为什么,但我不喜欢在网络中启用但未配置的接口。有什么办法可以避免这种情况吗?

或者我只是错了,所有接口都已启动(且未配置)并没有什么不好?即使它们已插入?

答案1

ip link show,默认显示所有接口,使用ip link show up时仅显示正在运行的接口。您可以使用过滤器来获得差异。

答案2

这是我的脚本,用于根据中的连接状态更新默认路由即时的。 (在后台运行)适用于多个接口,我在文件中定义优先级/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

答案3

ip link show 显示标志“LOWER_UP”以指示电缆已插入。您还可以检查 /sys/class/net/eth*/operstate 或运营商。然而,所有这些仅适用于绑定了 IP 地址的接口。

相关内容