2011-01-19 10 views
58

¿Hay alguna manera de enlazar rápidamente a una dirección de puerto TCP/IP e imprimir toda la información en STDOUT? Tengo una solución de depuración simple que escribe cosas en 127.0.0.1:4444 y me gustaría simplemente poder enlazar un puerto de bash e imprimir todo lo que encuentre. ¿Hay una forma fácil de hacer esto?Servidor de socket simple en Bash?

+0

relacionados http://unix.stackexchange.com/questions/49936/dev-tcp-listen-instead-of-nc-listen –

Respuesta

87
$ nc -k -l 4444 > filename.out 

ver nc(1)

+3

¿Hay alguna manera de hacerlo que no requiera que se ejecute en un bucle, es decir, se enlace hasta que se mate? Me conecto y desconecto repetidamente del socket y 'nc' muere si no lo ejecuto así:' while true; do nc -l 4444; hecho'. –

+2

Agregue la opción '-k'. –

+0

En algunas distribuciones, tendrá que cambiarlo a 'nc -k -l -p 4444'. –

37

El hecho de que se le pregunte cómo hacerlo en bash, aunque netcat respuesta es muy válida:

$ exec 3<>/dev/tcp/127.0.0.1/4444 
    $ cat <&3 
+11

Pero eso no funciona para escuchar. No creo que sea posible escuchar utilizando terminantemente bash – Vijayender

+6

Esta solución requiere un servidor de escucha. Bash no puede hacer esto por medio de '/ dev/tcp' como se explica en http://unix.stackexchange.com/a/49947/13746 – xebeche

+1

¿Escuchando? ¡Para eso está xinetd! : D – Evi1M4chine

8

que está funcionando como se esperaba:

nc -k -l 4444 |bash 

y luego usted

echo "ls" >/dev/tcp/127.0.0.1/4444 

y luego verá el listado realizado por bash.

[Una breve advertencia de seguridad]
Por supuesto, si se deja algo como esto funciona en su ordenador, usted tiene una puerta de entrada abierta para todo tipo de ataques porque los comandos se pueden enviar desde cualquier cuenta de usuario en cualquier host en su red. Esto no implementa seguridad (autenticación, identificación) y envía todos los comandos transmitidos sin cifrar a través de la red, por lo que puede ser fácilmente utilizado.

1

Adición de una respuesta utilizando ncat que @Freedom_Ben aludido:

ncat -k -l 127.0.0.1 4444 

y explicación de las opciones de hombre NCAT:

-k, --keep-open   Accept multiple connections in listen mode 
-l, --listen    Bind and listen for incoming connections 
+0

'ncat' viene con' nmap' y admite conexiones concurrentes, mientras que el comando 'nc' heredado no. –