netcat을 사용하여 포트에서 수신 대기하고 클라이언트가 연결될 때 명령의 출력을 보냅니다.

netcat을 사용하여 포트에서 수신 대기하고 클라이언트가 연결될 때 명령의 출력을 보냅니다.

LAN에 연결된 일부 연결된 장치에서 데이터를 읽고 이를 STDOUT으로 출력할 수 있는 Raspberry Pi(Debian Linux)가 있습니다.

프로그램이 "서버"에서 실행되고 스크립트 출력을 /usr/bin/data포트 1234에 제공하려고 한다고 가정해 보겠습니다.

모든 클라이언트가 다음과 같은 방법을 사용하여 해당 포트에 연결하여 해당 스크립트의 출력을 가져오기를 원합니다.

nc Server 1234 > ServerData.txt

나는 서버가 계속 살아 있고, 각 연결에 대해 스크립트를 실행하고, 데이터를 제공한 다음 클라이언트에 대한 연결을 닫기를 원합니다. 서버는 활성 상태를 유지하고 다음 연결을 기다려야 합니다.

서버에서 실행할 netcat 명령은 무엇입니까???

답변1

netcat의 고급 버전 중 하나가 필요합니다. ncat또는 다음 을 사용할 수 있습니다 socat.

서버 측

클라이언트가 연결되면 실행 가능한 프로그램을 실행 /usr/bin/data하고 프로그램 출력을 클라이언트로 보냅니다.

NCAT 방법:

$ ncat -l 1234 -c '/usr/bin/data' --keep-open

SOCAT 방법

$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0

고객 입장에서:

서버에 연결하고 서버로부터 출력을 받습니다.

파일에 대한 NCAT 방법

$ ncat Server 1234 | tee ServerData.txt

NC(netcat) 방법을 stdout으로 출력

$ </dev/null nc <Server.ip> 5403 > /dev/stdout

파일에 저장하려면 /dev/stdout을 파일 이름으로 바꾸세요.

파일에 대한 WGET 메소드

$ wget -q <Server.ip>:5403 -O myfile.txt

결과를 인쇄하려면 myfile.txt를 /dev/stdout로 바꾸세요.

관련 정보