Como forçar o netcat a enviar minha entrada imediatamente, não apenas nas novas linhas?

35

Como forçar o netcat a enviar minha entrada imediatamente, não apenas nas novas linhas? Quero testar um analisador HTTP manualmente e verificar como ele se comporta quando as linhas de cabeçalho estão espalhadas por vários pacotes.

thejh
fonte
2
tente socatcomo listado nesta resposta
Jeremy W

Respostas:

42

Use a tecla "eof" CtrlD,. Quando pressionado no meio de uma linha, ele dará ao netcat tudo o que foi inserido nesse ponto.

O buffer é realmente feito pela camada tty e não é tratado de maneira ncalguma. stty -icanon && nc ...desativaria o buffer e permitiria ncver os dados à medida que são inseridos no terminal, momento em que serão enviados imediatamente. (Observe que os comandos sttye ncdevem ser executados juntos, caso contrário, o próprio shell provavelmente o reativará ao exibir seu prompt.)

gravidade
fonte
+1, mas não há opção para abrir o netcat da maneira que não armazena nada em buffer?
precisa saber é
5
@ FinalContest: O buffer é feito pela camada tty. stty -icanon && nc ...ou stty raw && nc ...desativá-lo. [Note-se que ele deve ser executado em conjunto, caso contrário, o próprio shell seria reativá-lo ao exibir o prompt.]
grawity
@ grrawity: awesome, o primeiro funciona bem, mas o último fica preso ... ctrl-c não funciona mais para sair da sessão, e eu não consigo fazer com que o ctrl-z trabalhe nela também. Isso é esperado? Além disso, atualize sua resposta para que possamos limpar os comentários.
Lpapp
2
@FinalContest: Sim, rawmuda várias opções de tty, uma delas é a manipulação de teclas especiais de "controle" no nível tty. (É realmente um modo "bruto", na medida em que passa tudo para o programa.) Você pode usar stty -a -F /dev/pts/XXde outro tty para ver os parâmetros atuais.
grawity
Eu estou usando stty -icanon -echo && nc ...caso contrário, todos os caracteres que eu digitei nc são ecoados duas vezes
Gelin Luo