netcat nc を使用して複数のポートをチェックする

netcat nc を使用して複数のポートをチェックする

ポートが開くまで待機するには、次を使用します。

while ! nc -z 127.0.0.1 8080; do sleep 0.1; done

上記を変更して複数のポートをチェックするにはどうすればよいでしょうか。そうすれば、スクリプトは、すべてのポート (例: 8080、8081、8082) が使用されている場合にのみ停止するはずです。

答え1

nc各ポートごとに個別に実行する必要があります。

while ! (nc -z 127.0.0.1 8080 && nc -z 127.0.0.1 8081 && nc -z 127.0.0.1 8082)
    do sleep 0.1
done

(読みやすくするために複数行に分割)

これは、論理「and」演算子を含むコマンドのリストを持つシェル サブシェルを使用します&&。2 番目のncコマンドは、最初のコマンドが成功した場合にのみ実行されます。すべてのncコマンドが成功すると、サブシェルの終了ステータスは true になり、これは によって否定され!whileループが終了します。

関連情報