$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
動作します。ここでは、行区切り文字は必須の0A
ではなく、0D0A
です。
Netcatで0D0A
で区切られたクエリを入力するにはどうすればよいですか?
printf
を使用して一度に手動で\r\n
を入力するか、todos
のようなPerlワンライナーを実装してnc
にパイプすることで簡単に1回実行できます。しかし、おそらく私が見逃す簡単な方法はありますか?
私のnetcat
にはオプション-C
または--crlf
交換する \n
沿って \r\n
stdinで。
または、使用している端末によって異なります。私のデフォルト設定は、次の方法で確認できます。
$ stty -a
... lnext = ^V; ...
これは、入力用のliteral-next文字が control-V。タイピング control-v に続く control-m 改行を挿入します(改行はreturn
またはenter
キーを押したときに得られるものです)。
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