일부 IP에 대해 실패하면 Linux

일부 IP에 대해 실패하면 Linux

if then을 설치하려면 다음 코드를 사용하고 있습니다. 일부 IP에서는 작동하지만 일부 IP에서는 작동하지 않습니다. 특히 FAILURE 문에서는 작동하지 않습니다.

이것은 코드입니다

is_mounted() {
    mount | grep -qohw "$1"
}


{
pass=
for ip in  123.456.789  223.456.789
do
    if is_mounted "$ip"
    then
        echo -e " STACK MOUNT \e[1;33mALREADY\e[00m AVAILABLE \e[1;33mPASSED\e[00m "
        pass=1
        break
    fi
    mount -t nfs -o ro,nolock "$ip:/opt/media/" /mount/stack &>/dev/null
    if is_mounted "$ip"
    then
        echo -e " STACK MOUNT AVAILABLE \e[1;33mPASSED\e[00m "
        pass=1
        break
    fi
done
[ "$pass" ] || echo -e " STACK MOUNT NOT AVAILABLE          \e[00;31mFAILED\e[00m"
} | tee /tmp/log

이는 실패한 IP 139.41.170.10, 197.21.82.10, 139.41.170.11, 197.21.82.11, 139.31.125.11입니다. 이상적으로는 모든 IP에서 작동해야 합니다. 나도 이 IP를 모두 사용하고 싶다139.41.170.10 197.21.82.10 139.41.170.11 197.21.82.11 139.31.125.11 IP의 경우'. 모든 AWK 제안.

답변1

함수 에서 is_mounted출력을 테스트하여 mount무언가가 반환되는지 확인한 다음 그에 따라 0 또는 1을 반환해야 합니다.

또한 내장된 디버깅 도구를 사용하는 것이 좋습니다 bash. 우리가 디버깅하도록 놔두는 대신 무엇이 문제인지 빨리 알아낼 수 있을 것입니다.

set -x디버깅하려는 코드 블록의 시작 부분에 하나만 배치하면 됩니다 set +x.

... some code ...

set -x
... code to debug ...
set +x

... more code ...

관련 정보