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로 바꾸세요.