Come posso forzare netcat a inviare immediatamente i miei input, non solo su newline?


35

Come posso forzare netcat a inviare immediatamente i miei input, non solo su newline? Voglio testare manualmente un parser HTTP e verificare come si comporta quando le righe di intestazione sono distribuite su più pacchetti.


2
prova socatcome indicato in questa risposta
Jeremy W,

Risposte:


42

Utilizzare il tasto "eof", CtrlD. Se premuto nel mezzo di una linea, darà a netcat tutto ciò che è stato inserito in quel punto.

Il buffering viene effettivamente eseguito dal livello tty e non gestito ncaffatto. stty -icanon && nc ...disabiliterebbe il buffering e permetterebbe ncdi vedere i dati quando vengono inseriti nel terminale, a quel punto verranno inviati immediatamente. (Notare che i comandi sttye ncdevono essere eseguiti insieme, altrimenti la shell stessa potrebbe riattivarla quando visualizza il suo prompt.)


+1, ma non esiste alcuna opzione per aprire netcat in modo da non bufferizzare nulla?
lpapp,

5
@FinalContest: il buffering viene eseguito dal livello tty. stty -icanon && nc ...o stty raw && nc ...lo disabiliterebbe. [Si noti che deve essere eseguito insieme, altrimenti la shell stessa lo riattiverebbe quando viene visualizzato il prompt.]
Grawity

@grawity: fantastico, il primo funziona bene, ma il secondo si blocca ... ctrl-c non funziona più per uscire dalla sessione, e non riesco nemmeno a far funzionare ctrl-z su di esso. È previsto? Inoltre, ti preghiamo di aggiornare la tua risposta in modo da poter ripulire i commenti.
lpapp,

2
@FinalContest: Sì, rawcambia un sacco di opzioni tty, una delle quali è la gestione di speciali tasti "control" a livello tty. (È davvero una modalità "raw", in quanto passa tutto al programma.) È possibile utilizzare stty -a -F /dev/pts/XXda un altro tty per vedere i parametri correnti.
Grawity

Sto usando stty -icanon -echo && nc ...altrimenti ogni carattere che ho digitato nc viene ripetuto due volte
Gelin Luo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.