Esta es la versión que uso:
while
port=$(shuf -n 1 -i 49152-65535)
netstat -atun | grep -q "$port"
do
continue
done
echo "$port"
El comando shuf -n 1 -i 49152-65535
le da un puerto "aleatorio" en el rango dinámico. Si ya se usa, se prueba con otro puerto en ese rango.
El comando netstat -atun
enumera todos los puertos (-a )TCP (-t )y UDP (-u )sin perder tiempo para determinar los nombres de host (-n ).