네트워크 케이블이 연결되어 있지만 인터페이스가 열려 있지 않은지 확인하십시오.

네트워크 케이블이 연결되어 있지만 인터페이스가 열려 있지 않은지 확인하십시오.

~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 주소가 바인딩된 인터페이스에만 적용됩니다.

관련 정보