ネットワークケーブルが接続されているがインターフェイスが開いていないことを確認します。

ネットワークケーブルが接続されているがインターフェイスが開いていないことを確認します。

〜20個のリモートサーバー(各サーバーに2〜6個のNIC)から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アドレスがバインドされているインターフェイスにのみ適用されます。

関連情報