$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
Funciona, o separador de linha está 0A
aqui em vez de require 0D0A
.
Como digito uma 0D0A
consulta separada no netcat?
É fácil fazer algo único printf
digitando manualmente \r\n
a cada vez ou implementar algum todos
-como Perl oneliner e canalizá-lo para nc
, mas talvez haja alguma maneira fácil que eu perdi?
Responder1
O meu netcat
tem uma opção -C
ou --crlf
para substituir \n
por \r\n
stdin.
Alternativamente, depende de qual terminal você está usando. Minhas configurações padrão podem ser vistas por:
$ stty -a
... lnext = ^V; ...
Isto mostra oliteral-próximocaractere para entrada é control-V. Portanto, digitar control-vseguido de control-minserirá um retorno de carro (em oposição a uma nova linha, que é o que você obtém quando pressiona a tecla return
ou enter
).
Responder2
Você pode canalizar uma string para nc
:
echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
Verificar com:
$ echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | hd
00000000 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a |GET / HTTP/1.1..|
00000010 48 6f 73 74 3a 20 65 78 61 6d 70 6c 65 2e 63 6f |Host: example.co|
00000020 6d 0d 0a 0d 0a |m....|
00000025
Responder3
Você pode canalizar sed
para nc
o modo sem buffer ( -u
) para converter \n
do seu stdin para \r\n
:
sed -u 's/$/\r/g' | nc localhost 6379
Você também pode usar unix2dos
com stdbuf
:
stdbuf -i0 -o0 -e0 unix2dos | nc localhost 6379