$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
...
작동합니다. 줄 구분 기호는 0A
필수 대신 여기에 있습니다 0D0A
.
0D0A
netcat에 구분된 쿼리를 어떻게 입력합니까 ?
매번 printf
수동으로 입력하여 일회성 작업을 수행 하거나 Perl oneliner와 같은 것을 구현하고 파이프로 연결하는 것은 쉽습니다 . 하지만 제가 놓친 쉬운 방법이 있을까요?\r\n
todos
nc
답변1
내 netcat
옵션이 있거나 -C
stdin 에서 대체 --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