netcat이 응답을 인쇄하지 않습니다 명령을 올바르게 보내지 만 응답을

명령을
실행 하고 입력 할 때 netcat파이프 응답을 사용 하여 파이프 응답을 사용하여 TCP 포트로 명령을 보내려고하는데 응답을 올바르게 인쇄하지만 파이프에서 명령을 전달하면 명령을 올바르게 보내지 만 응답을 인쇄하지 않습니다
netcat

따라서 이것은 올바르게 작동합니다.

netcat  localhost 9009

이것은 명령을 보내지 만 응답을 인쇄하지는 않습니다.

echo 'my_command' | netcat  localhost 9009

왜? 응답 텍스트를 인쇄하려면
어떻게 netcat해야합니까?



답변

@Patrick이 말했듯 이이 문제는 일반적으로 netcat응답이 제공되기 전에 종료되기 때문에 발생합니다 . -q 2명령 행 에 추가 하여 netcat표준 입력에서 EOF를 감지 한 후 약 2 초간 정지하도록 지시하십시오. 분명히 다른 초 수만큼 기다릴 수 있습니다.


답변

이것을 사용하십시오 :

cat <(echo command) - | nc host port

문제는 ncstdin이 닫힌 직후에 연결을 닫는 것인데, 이는 간단한 my_command문자열의 경우 매우 빠르 므로 응답을받을 수있는 기회를 얻지 못합니다. 매우 큰 파일을 파이프하면 파일 보내기가 완료되기 전에 응답을받을 수 있음을 알 수 있습니다.

입력 cat-두 번째 인수로 : 그것은 수 cat는 첫 번째 인수의 내용을 보낸 후 통해 파이프에 더 많은 콘텐츠에 대한 표준 입력 (stdin)에서들을 수 있습니다. 첫 번째 인수는 echo명령을 전달 cat하는 것 cat < file - | ...입니다. 명령이 la 인 파일 일 수도 있습니다 .

또는 다음을 수행하십시오.

(echo command; while true; do sleep 0.01; echo -n "#"; done) | nc host port

#입력의 두 번째 줄에 무제한 문자를 보냅니다 . #이것을 주석으로 무시하는 remote와 같은 bash에 대한 작업을 사용하십시오 . 여기서는 10 밀리 초의 작은 대기 시간을 선택 했으므로 연결 종료시 더 빠르게 반응합니다. YMMV.

그 단점은 할 수 있습니다 cat또는 while루프를하고 nc당신이 명중 할 때까지 계속 실행 ^C또는 ^D쉘에. 그것은 실제로 원격 끝에 달려 있습니다.

-w 1(OSX netcat) 또는 -i 1(nmap의 ncat)을 사용하여 시간 초과를 추가 하면 연결이 닫히고 nc1 초 후에 연결 되지만 cat문자를 입력하고 파이프가 끊어 질 때까지 계속 실행됩니다 (생각합니다).

그러나 명령을 수신하고 처리 한 후 원격 측에서 자동으로 연결을 닫는 경우 작동합니다. 이렇게하면 nc클라이언트와 프로세스 배관 도 종료 됩니다.

이 답변은 동일한 수퍼 유저 질문에 대한이 답변을 기반으로합니다 .


답변

다른 오픈 BSD – netcat을 버전의 서로 다른 조합을 필요로하는, 황당하다 -w <seconds>, -q <seconds>, -N연결의 다른 쪽 끝에서 실행되는 내용에 따라, 심지어 필요한 다른 인수를. 특정 버전 또는 서버에서 시간 종료 옵션을 사용하면 지연이 발생하고이를 사용하지 않으면 매우 긴 (무한?) 지연이 발생할 수 있습니다. 그리고 gnu netcat과 다른 단점을 기대하지만 버전마다 다른지 모릅니다.

예를 들어 archlinux의 버전 1.130_3은 내가 할 때 매우 오래 걸립니다 (영원합니까?).

$ echo response | nc -l 9999 &
[1] 15190

$ time echo request | nc localhost 9999
request
response

(wait forever possibly)

그러나 서버 또는 클라이언트에 추가 된 -N과 함께 작동합니다.


답변

나는 이것이 조금 오래되었다는 것을 알고 있지만 다른 대답은 나를 위해 효과가 없었으며 이것은 효과가 있었다.

echo 'test' | netcat -N $server $port

주목하십시오 -N:

입력에서 EOF 후 네트워크 소켓을 종료하십시오. 일부 서버는 작업을 마치기 위해 이것을 요구합니다.

Windows와 Linux 모두에서 나를 위해 일했습니다.

참고 : 이것은 중복 질문 에 대해 게시 한 답변의 사본 입니다.

나는 이것이 유용 할 수 있다고 생각합니다. 정책이나 다른 정책에 위배되는 경우 Mods는 자유롭게 편집 / 삭제할 수 있습니다.


답변