터미널에 netcat 입력 인쇄

터미널에 netcat 입력 인쇄

파일 내용을 캡처하여 다음으로 파이프하는 스크립트를 작성하려고 합니다 nc.

$cat somefile.txt | nc server port

파일 내용은 예상대로 서버로 전송되지만 터미널에서는 서버의 응답만 볼 수 있습니다.

내가 보낸 내용을 보려면 어떻게 해야 하나요?

somefile.txt의 각 줄에 대해 다른 응답이 있으며 모든 것을 하나로 모으고 싶습니다.

답변1

tee프로세스 대체를 사용하고 활용할 수 있습니다 .

$ cat somefile.txt | tee >(nc server port)

tee그냥 복사하세요입력하다둘 다stdout 그리고하나의 문서.

<()( 프로세스 대체)을 사용하면 파일 대신 쓰기 명령의 입력을 bash알립니다 .bash

답변2

tee프로세스 대체를 사용하고 피할 수 있습니다 .

$ ( cat somefile.txt | tee /dev/fd/3 | nc host port ) 3>&1

이것의 장점은 nc동기적으로 실행할 수 있다는 것입니다. 다음은 비동기 프로세스 교체 동작의 예입니다.

user@hostname $ cat somefile.txt
GET / HTTP/1.0
Host: StackOverflow.com

user@hostname $ cat somefile.txt | tee >(nc stackoverflow.com 80); echo "DONE"
GET / HTTP/1.0
Host: StackOverflow.com

DONE
user@hostname $ HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: https://stackoverflow.com/
[...]

"DONE"을 표시하고 출력 중간에 힌트를 그립니다. 동기적으로 실행하는 경우에는 문제가 되지 않습니다 nc.

user@hostname $ ( cat somefile.txt | tee /dev/fd/3 | nc stackoverflow.com 80 ) 3>&1; echo "DONE"
GET / HTTP/1.0
Host: StackOverflow.com

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: https://stackoverflow.com/
[...]
DONE

관련 정보