Introdução: Criei uma função bash que é capaz de verificar se uma porta está disponível e a incrementa em 1 se for falso até um determinado número máximo de portas. Por exemplo, se a porta 500 estiver indisponível, a disponibilidade de 501 será verificada até 550.
Objetivo: Para testar esta função bash, preciso criar um intervalo de portas que estão no estado LISTEN.
Tentativas: No Windows, é possível criar uma porta LISTEN usando estes comandos do PowerShell :
PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234
PS C:\Users\u> $listener.Start();
PS C:\Users\u> netstat -nat | grep 1234
TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost
PS C:\Users\u> $listener.Stop();
PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u>
Com base nisso, eu estava tentando pensar em um comando que pudesse fazer o mesmo no CentOS, mas não sei por que e comecei a pesquisar no Google sem encontrar uma solução que resolvesse esse problema.
Resposta esperada : vou aceitar e aprovar a resposta que contém um comando capaz de criar uma porta LISTEN e, uma vez executado o comando, a porta deve permanecer no estado LISTEN, ou seja:
[user@host ~]$ ss -nat | grep 500
LISTEN 0 128 *:500 *:*
netstat -an --tcp | awk '/LISTEN/ {sub(".*:", "", $4); print $4}' | sort -nu
. On * BSD:netstat -an -f inet -p tcp | awk '/LISTEN/ {sub(".*\\.", "", $4); print $4}' | sort -nu
.