¿Cómo puedo forzar a netcat a enviar mi entrada de inmediato, no solo en las nuevas líneas?

35

¿Cómo puedo forzar a netcat a enviar mi entrada de inmediato, no solo en las nuevas líneas? Quiero probar un analizador HTTP manualmente y verificar cómo se comporta cuando las líneas de encabezado se distribuyen entre múltiples paquetes.

thejh
fuente
2
intente socatcomo se indica en esta respuesta
Jeremy W

Respuestas:

42

Utilice la tecla "EF", CtrlD. Cuando se presiona en el medio de una línea, le dará a netcat todo lo que se ha ingresado en ese punto.

El almacenamiento en búfer se realiza realmente por la capa tty y no se maneja ncen absoluto. stty -icanon && nc ...deshabilitaría el almacenamiento en búfer y permitiría ncver los datos a medida que se ingresan en el terminal, momento en el cual se enviarán de inmediato. (Tenga en cuenta que los comandos sttyy ncdeben ejecutarse juntos, de lo contrario, el propio shell probablemente lo volvería a habilitar al mostrar su solicitud).

Gravedad
fuente
+1, pero ¿no hay ninguna opción para abrir netcat de la forma en que no almacena nada?
lpapp
55
@FinalContest: la capa tty realiza el almacenamiento en búfer. stty -icanon && nc ...o stty raw && nc ...lo deshabilitaría. [Tenga en cuenta que se debe ejecutar en conjunto, de lo contrario el depósito propiamente sería volver a activarlo cuando se visualiza el símbolo.]
grawity
@grawity: impresionante, el primero funciona bien, pero el segundo se atasca ... ctrl-c ya no funciona para salir de la sesión, y tampoco puedo hacer que ctrl-z funcione en él. ¿Eso se espera? Además, actualice su respuesta para que podamos limpiar los comentarios.
lpapp
2
@FinalContest: Sí, rawcambia un montón de opciones de tty, una de ellas es el manejo de teclas especiales de "control" a nivel tty. (Es realmente un modo "en bruto", ya que pasa todo al programa). Puede usarlo stty -a -F /dev/pts/XXdesde otro tty para ver los parámetros actuales.
Grawity 05 de
De lo stty -icanon -echo && nc ...contrario, estoy usando cada char que escribí en nc se repite dos veces
Gelin Luo