Estoy usando el siguiente para esperar hasta que se abra un puerto.
while ! nc -z 127.0.0.1 8080; do sleep 0.1; done
¿Cómo se puede modificar lo anterior para verificar múltiples puertos? Por lo tanto, el script debería detenerse sólo cuando todos los puertos estén ocupados, por ejemplo, 8080, 8081 y 8082.
Respuesta1
Debe ejecutar nc
por separado para cada puerto:
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
(dividido en varias líneas para facilitar la lectura)
Esto utiliza un subshell del shell con una lista de comandos con un &&
operador lógico "y"; el segundo nc
comando sólo se ejecuta si el primero tuvo éxito, etc.; Una vez que todos nc
los comandos son exitosos, el estado de salida del subshell es verdadero, esto lo niega !
y el while
ciclo termina.