Como criar um ouvinte TCP?

27

Introdução: Eu criei uma função bash que é capaz de verificar se uma porta está disponível e a incrementa em 1 se for false até um certo número de porta máximo. Por exemplo, se a porta 500 não estiver disponível, a disponibilidade de 501 será verificada até 550.

Objetivo: Para testar essa função bash, preciso criar um intervalo de portas que estejam no estado LISTEN.

Tentativas: No Windows, é possível criar uma porta LISTEN usando esses 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 poderia fazer o mesmo no CentOS, mas não sei por que e comecei a usar o Google sem encontrar uma solução que resolvesse esse problema.

Resposta esperada : Aceitarei e rejeitará a resposta que contenha um comando que seja capaz de criar uma porta LISTEN e, uma vez que o comando tenha sido executado, a porta deve permanecer no estado LISTEN, ou seja:

[user@host ~]$ ss -nat | grep 500
LISTEN     0      128                       *:500                       *:*
    
por 030 07.07.2015 / 23:08

3 respostas

33

Você pode usar nc -l como um método para fazer o que está procurando. Algumas implementações de nc possuem uma opção -L que permite que as conexões persistam.

Se você precisar deles por pouco tempo, poderá abrir esse comando em um loop for e ter um monte de portas abertas dessa maneira.

Se você precisar abrir mais, poderá usar um dos super servidores para criar um daemon.

    
por 07.07.2015 / 23:17
25

você pode criar um ouvinte de porta usando o Netcat.

root@ubuntu:~# nc -l 5000

você também pode verificar se a porta está aberta ou não usando o comando netstat.

root@vm-ubuntu:~# netstat -tulpen | grep nc
tcp        0      0 0.0.0.0:5000             0.0.0.0:*               LISTEN      0          710327      17533/nc

você também pode verificar com nc:

Ouvinte do servidor Netcat:

nc -l localhost 5000

Cliente Netcat:

root@vm-ubuntu:~# nc -v localhost 5000
Connection to localhost 5000 port [tcp/*] succeeded!

se a porta não estiver aberta

root@vm-ubuntu:~# nc -v localhost 5000
nc: connect to localhost port 5000 (tcp) failed: Connection refused
    
por 08.07.2015 / 00:11
6

Ouça usando o netcat.

# nc -l 5555

Verifique usando ss

# ss -nat|grep 5555
LISTEN     0      1                         *:5555                     *:*
#
    
por 07.07.2015 / 23:20