$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
它可以起作用,行分隔符就0A
在这里,而不是必需的0D0A
。
如何0D0A
在 netcat 中输入 -separated 查询?
printf
每次手动输入\r\n
或实现一些todos
类似 Perl 的单行程序并通过管道传输到,做一次性的事情很容易nc
,但也许有一些我错过的简单方法?
答案1
我netcat
有一个选项-C
或用标准输入--crlf
替换。\n
\r\n
或者,这取决于你使用的终端。我的默认设置可以通过以下方式查看:
$ stty -a
... lnext = ^V; ...
这表明文字下一个输入的字符是control-V。因此,键入control-v后跟control-m将插入回车符(而不是换行符,这是按下return
或enter
键时得到的)。
答案2
您可以通过管道将字符串传输至nc
:
echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
检查:
$ 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
答案3
您可以在非缓冲模式下sed
通过管道nc
( )将标准输入-u
转换为:\n
\r\n
sed -u 's/$/\r/g' | nc localhost 6379
您还可以unix2dos
使用stdbuf
:
stdbuf -i0 -o0 -e0 unix2dos | nc localhost 6379