$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
它有效,行分隔符號就0A
在這裡而不是必需的0D0A
。
如何0D0A
在 netcat 中輸入 - 分隔的查詢?
printf
每次手動輸入\r\n
或實現一些todos
類似 Perl oneliner 並將其通過管道傳輸到 的一次性操作很容易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
下透過管道將 stdin轉換為:nc
-u
\n
\r\n
sed -u 's/$/\r/g' | nc localhost 6379
您也可以unix2dos
使用stdbuf
:
stdbuf -i0 -o0 -e0 unix2dos | nc localhost 6379