netcat: 에코 서비스에 텍스트를 보내고, 응답을 읽고 종료합니다.

netcat: 에코 서비스에 텍스트를 보내고, 응답을 읽고 종료합니다.

netcat내 서버의 에코 서비스에 텍스트를 보내고 응답을 받은 다음 종료하여 연결이 여전히 양호한지 확인하는 데 사용하고 싶습니다 . 내가 지금까지 시도한 것 :

 echo 'test' | netcat server 7 

이렇게 하면 netcat은 종료하는 대신 더 많은 입력을 기다립니다.

netcat에코 서비스로부터 응답을 받은 후 종료하는 방법은 무엇입니까?

답변1

netcat-openbsd방금 시도해 보았습니다. 와 netcat-traditional(우분투 16.4) 사이의 동작이 약간 다릅니다. OpenBSD 변형은 여러분이 기대하는 대로 작동하는 반면, netcat-traditional의 경우 -q 1더 많은 입력을 기다리지 않도록 추가해야 했습니다.

echo 'test' | netcat -q 1 server 7

답변2

나는 이것이 약간 오래되었다는 것을 알고 있지만 다른 답변 중 어느 것도 나에게 도움이 되지 않았습니다.

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

참고 -N:

EOF를 입력한 후 네트워크 소켓을 닫습니다. 일부 서버에서는 작업을 수행하기 위해 이 작업이 필요합니다.

Windows 및 Linux에서 작동합니다.

답변3

이것을 사용하십시오 :

cat <(echo command) - | nc host port

문제는 ncstdin이 닫히자마자 연결이 닫히게 된다는 점인데, 이는 간단한 my_command문자열의 경우 매우 빠르기 때문에 응답을 받을 기회가 전혀 없습니다. 매우 큰 파일을 파이프하면 파일 전송이 완료되기 전에 응답을 받을 수 있습니다.

두 번째 cat인수 입력 -: cat첫 번째 인수의 내용을 보낸 후 더 많은 내용을 위해 표준 입력을 수신합니다. 첫 번째 매개변수는 echo명령이 실행되도록 합니다 cat. la 명령을 포함하는 파일일 수도 있습니다 cat < file - | ....

이것의 단점은 껍질을 치 ^C거나 칠 때까지 열려 있다는 것입니다 . (OSX netcat) 또는 (nmap의 경우 ncat) 을 ^D사용하여 시간 초과를 추가하면 1초 후에 연결이 닫히지만 특정 문자를 입력할 때까지 프로세스가 종료되지 않습니다.-w 1-i 1

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

답변4

귀하의 질문을 올바르게 이해하지 못했습니까?

기본 netcat 리스너는 입력을 받은 후 종료되어야 합니다(이 경우 에코는 이를 netcat에 전달한 다음 리스너에게 전달합니다).

수신 Netcat 서비스가 입력을 받은 후에도 계속 수신 대기하도록 하려면 다음을 수행하십시오.

nc -lk 12345
  • 여기서 12345는 포트 번호입니다.

가장 중요한 것은 netcat의 매뉴얼 페이지를 확인하는 것입니다. 모든 명령에 매우 유용합니다...

man nc

관련 정보