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.


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.)


+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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.