comprobar múltiples puertos usando netcat nc

comprobar múltiples puertos usando netcat nc

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 ncpor 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 nccomando sólo se ejecuta si el primero tuvo éxito, etc.; Una vez que todos nclos comandos son exitosos, el estado de salida del subshell es verdadero, esto lo niega !y el whileciclo termina.

información relacionada