2010-06-09 18 views
38

Soy consciente de que esta no es una pregunta directa de 'desarrollo', pero necesito esta información para probar un proyecto de desarrollo, así que creo que alguien podría haber tenido un problema similar.Herramienta Linux para enviar datos en bruto a un servidor TCP

Voy a probar un software que ejecuta un servidor TCP y de acuerdo con los comandos enviados responde algunas respuestas. Voy a probar el software y no quiero escribir código si no funciona bien. Entonces quiero enviar esos comandos y probar el software del servidor.

¿Cómo puedo lograr esto con una caja de Linux?

Respuesta

43

netcat o telnet, he utilizado ambos en el pasado para probar los protocolos basados ​​en texto simple. netcat es más flexible.

+7

o socat, para netcat ++ –

+0

@luke: No funciona en transmisiones binarias. – user2284570

0

Parece que Expect es lo que desea. Existen implementaciones para múltiples lenguajes de script, y puede crear un script las peticiones/respuestas del servidor, además de los tiempos de espera adecuadas, control de errores, etc.

+2

Por favor, muestre algunos ejemplos, es raro encontrar a alguien que entienda el esperado correctamente para la conexión TCP múltiple. Tengo un problema cuando lo hago con la conexión única, pero cuando se trata de conexión múltiple, toma más tiempo que la duración normal. Por favor, muestre un ejemplo, ¿cómo puede hacer esto con esperar? '(echo '2'> /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2'> /dev/tcp/192.168.1.163/8888)' – YumYumYum

+3

Me sorprende que esto se vuelva downvoted, cuando la respuesta más votados y aceptados recomienda telnet para "probar protocolos basados ​​en texto simple" –

55

De fiesta con dd:

dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/$target_host/$port 

o incluso con el gato:

cat </dev/urandom> /dev/tcp/$target_host/$port 
+6

'/ dev/tcp/*/*' es un nombre de archivo especial que bash maneja de una manera especial. En realidad no existe. – Flimm

+0

'(echo '2'> /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2'> /dev/tcp/192.168.1.163/8888)' por qué más de 1 tarda 5 minutos, pero cuando usó 1 solicitud y luego menos de 1 segundo ¿está listo? – YumYumYum

+0

Si bien 'nc' es posiblemente la mejor herramienta, esta debería ser la respuesta aceptada. – Arj

Cuestiones relacionadas