Introducción: he creado una función bash que puede verificar si un puerto está disponible y lo incrementa en 1 si es falso hasta cierto número de puerto máximo. Por ejemplo, si el puerto 500 no está disponible, se comprobará la disponibilidad de 501 hasta 550.
Objetivo: para probar esta función bash, necesito crear un rango de puertos que estén en estado LISTEN.
Intentos: en Windows es posible crear un puerto ESCUCHAR usando estos comandos de 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>
En base a esto, estaba tratando de pensar en un comando que pudiera hacer lo mismo en CentOS, pero no sé por qué y comencé a buscar en Google sin encontrar una solución que resuelva este problema.
Respuesta esperada : aceptaré y votaré la respuesta que contiene un comando que puede crear un puerto LISTEN y una vez que el comando se haya ejecutado, el puerto debe permanecer en estado LISTEN, es decir:
[user@host ~]$ ss -nat | grep 500
LISTEN 0 128 *:500 *:*
fuente
netstat -an --tcp | awk '/LISTEN/ {sub(".*:", "", $4); print $4}' | sort -nu
. En * BSD:netstat -an -f inet -p tcp | awk '/LISTEN/ {sub(".*\\.", "", $4); print $4}' | sort -nu
.Respuestas:
Puede utilizarlo
nc -l
como método para hacer lo que está buscando. Algunas implementaciones denc
tienen una-L
opción que permite que las conexiones persistan.Si solo los necesita por un tiempo, puede abrir este comando en un
for
bucle y tener un montón de puertos abiertos de esa manera.Si necesita abrirlos por más tiempo, puede usar uno de los súper servidores para crear un demonio.
fuente
-L
que sugeriría:-k
,--keep-open
aceptar varias conexiones en modo de escuchapuede crear un escucha de puerto con Netcat.
También puede verificar si el puerto está abierto o no utilizando el comando netstat.
también puedes consultar con nc:
Oyente del servidor Netcat:
Cliente Netcat:
si el puerto no está abierto
fuente
-p
o no funcionó:nc -l -p 1234
/bin/nc --> nc.traditional
(por ejemplo, debian), use la-p
opción, como aconsejó @Leahkim, arriba.Escucha usando netcat.
Verificar usando ss
fuente
Tenga en cuenta que el
netcat
paquete de Debian tiene una implementación diferente donde (al menos) necesita proporcionar el puerto a través de la-p
opción y la-k
opción no funciona. Puede encontrar este problema con Docker.sudo apt install -y netcat
nc -l -p 1337
Puede considerar usar en su
openbsd-netcat
lugar donde funciona la-k
opción.fuente
El siguiente código de Python es útil para abrir un puerto ficticio
'' 'Servidor de socket simple usando hilos' '' import socket import sys HOST = '' # Nombre simbólico, lo que significa todas las interfaces disponibles PORT = 5500 # Puerto arbitrario no privilegiado s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) imprimir 'Enchufe creado'
Enlace socket al host local y puerto
intente: s.bind ((HOST, PORT)) excepto socket.error como msg: print 'Error de enlace. Código de error: '+ str (msg [0]) +' Mensaje '+ msg [1] sys.exit () print' Enlace de socket completado '
Comience a escuchar en el zócalo
s.listen (10) print 'Enchufe ahora escuchando'
ahora sigue hablando con el cliente
mientras que 1: # espera para aceptar una conexión, bloquea la conexión de llamadas, addr = s.accept () imprime 'Conectado con' + addr [0] + ':' + str (addr [1]) s.close ()
Guarde el archivo y ejecútelo con el comando python como se muestra a continuación
~] # python portlistener.py Socket creado Socket bind complete Socket ahora escucha
Luego puede verificar desde la máquina requerida.
fuente