mkfifo를 사용하여 Netcat 서버와 텍스트 파이프 연결

mkfifo를 사용하여 Netcat 서버와 텍스트 파이프 연결

netcat 서버가 서버에 텍스트를 입력하기 위한 두 개의 파이프와 서버에서 텍스트를 출력하기 위한 또 다른 파이프를 만들고 싶습니다. 입력 및 출력 파이프가 있는 별도의 스크립트에서 서버를 실행하고 있습니다. 아직 만들지 않은 또 다른 스크립트는 입력 파이프를 사용하여 netcat 서버의 출력을 읽은 다음 데이터를 출력 파이프로 보냅니다. 이런 일이 일어나는 동안 클라이언트는 서버로 데이터를 보내고 있는데, 제가 작성하지 않은 스크립트는 클라이언트에서 보낸 데이터를 서버에서 읽어 서버로 출력한 다음 클라이언트로 보냅니다. . 출력 또는 입력 파이프를 추가하면 서버 스크립트가 클라이언트로부터 데이터를 받지 못하고 입력 파이프로 전송된 데이터에 응답하지 않습니다. 왜 이런 일이 발생하는지 전혀 모르겠습니다. 누군가가 이 작업을 수행하는 방법을 알려줄 수 있다면 좋을 것입니다.

서버 스크립트:

#!/bin/bash

mkfifo in
mkfifo out

sudo nc -lk 22 <in >out
#Yes, I know I can run this in background, but I don't
#+want to do that yet.

클라이언트 스크립트:

#!/bin/bash

while [ 1 ]
do
nc localhost 22
done
#I know this block looks odd, but it allows the client to continue
#+communicating with the server, even after an EOF.

이론적인 서버 처리 스크립트:

#!/bin/bash
#This script is run after the server script is run in another console.

while [ 1 ]
do
in="$(cat out)" #The script will be stuck here until there is output from the "out" pipe
if [ $in = "blah" ]
then
echo "blah to you, too." >in #Here, the echo output should be sent to the client from the server
fi
#I can add a lot more here after I get this sorted out
done

관련 정보