브리지의 인터페이스 수를 계산하는 방법

브리지의 인터페이스 수를 계산하는 방법

마지막 포트가 제거될 때만 브리지를 종료하고 싶기 때문에 다소 인위적인 검사 방법을 사용하여 이를 수행합니다.

brctl show는 정보를 얻기 위해 구문 분석하기 어려워 보이며 아래에 있는 것보다 훨씬 나아지지도 않습니다. 더 깨끗한 방법이 있습니까?

 brctl_count_if()
 {
        local BRIDGE=$1

        if [ ! -d /sys/devices/virtual/net/$BRIDGE ]; then
            echo 0
            return
        fi

        /bin/ls -1 /sys/devices/virtual/net/$BRIDGE/brif 2>/dev/null | wc -l
 }

답변1

할 수 있어요:

has_ports() {
  ls -A "/sys/devices/virtual/net/$1/brif/" 2> /dev/null | grep -q .
}

has_ports br0 || brctl delbr br0

또는:

if ! has_ports br0; then
  brctl delbr br0
fi

-A( 인터페이스 이름은 로 시작할 수 있으므로 그렇게 해야 합니다 ..)

포트 수를 계산하려면:

그리고 zsh:

ports=(/sys/devices/virtual/net/$bridge/brif/*(DN:t))
printf '%s\n' "$#ports ports in $bridge"

(:t)전체 경로가 아닌 파일 이름만 포함하십시오.

그리고 bash:

shopt -s nullglob dotglob
ports=("/sys/devices/virtual/net/$brige/brif/"*)
printf '%s\n' "${#ports[@]} ports in $bridge"

(s에는 동등한 경로가 없으므로 포트에는 전체 경로가 포함됩니다 bash.)zsh:t

존재하지 않는 브리지의 경우 둘 다 0을 반환합니다.

관련 정보