私は次のコードをifthenで使用してマウントしています。一部の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
これらは、139.41.170.10、197.21.82.10、139.41.170.11、197.21.82.11、139.31.125.11で障害が発生したIPです。理想的には、どのIPでも機能するはずです。また、これらすべてのIPを使用したい '139.41.170.10 197.21.82.10 139.41.170.11 197.21.82.11 139.31.125.11のIPの場合'。 AWKの提案。
is_mounted
関数で、mount
の出力をテストして、何かが返されたことを確認し、それに応じて0または1を返す必要があります。
また、bash
に組み込まれているデバッグ機能を使用することを強くお勧めします。デバッグを試みるのではなく、何が問題になっているのかがすぐにわかります。
デバッグするコードのブロックの先頭にset -x
を置き、無効にする場合はset +x
を置きます。
... some code ...
set -x
... code to debug ...
set +x
... more code ...