파이프를 통해 netcat에 연결할 수 없습니다

파이프를 통해 netcat에 연결할 수 없습니다

Docker 컨테이너에서 다음과 같이 시작된 오징어 에이전트를 실행하고 있습니다.

docker run --privileged -d --publish=3128:3128 --name foo squid

이름이 다른 컨테이너에서 정보를 얻고 싶습니다 bar.

docker run --rm -it --name bar ubuntu:trusty bash

bar컨테이너에서 실행하는 경우 :

nc 172.17.0.1 3128
HEAD /

그런 다음 서버에서 일부 출력을 얻습니다. 하지만 이것을 실행하면:

echo 'HEAD /' | nc 172.17.0.1 3128

나는 아무것도 얻지 못했습니다. 왜 안 돼?

답변1

아마도 표준 입력에서 파일 끝을 수신한 직후 netcat이 종료되었기 때문일 것입니다. 노력하다

(echo 'HEAD /'; sleep 5) | nc 172.17.0.1 3128

netcat의 로컬 입력을 네트워크 데이터를 읽고 표준 출력에 쓸 수 있을 만큼 오랫동안 열어 두십시오. 5지연되는 시간(초)입니다 .

Netcat에는 이 문제를 해결할 수 있는 옵션이 있습니다. 음수 종료 시간 초과를 지정하면 stdin에서 EOF 후에 종료되는 대신 네트워크 연결이 닫힐 때까지 기다립니다.

echo 'HEAD /' | nc -q -1 172.17.0.1 3128

관련 정보