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