netcat과 영구 클라이언트 연결을 설정하는 방법은 무엇입니까?

netcat과 영구 클라이언트 연결을 설정하는 방법은 무엇입니까?

정의된 간격으로 서버에 데이터를 보내기 위해 폴더를 지속적으로 반복하는 bash 스크립트를 작성 중입니다. 나는 서버에 연결하고 데이터를 보내는 도구로 netcat을 사용합니다. 내 의사코드는 다음과 같습니다:

while true
do
    read_folder()
    process_data() > result.txt
    cat result.txt > netcat ip port
    wait 10 sec
done

내 유일한 문제는 이 경우 클라이언트가 매번 TCP/IP 연결에서 서버에 연결하고 연결을 끊는다는 것입니다. 스크립트 시작 부분에서 연결을 설정하고 끝 부분에서 닫는 것을 선호합니다.

Bash 스크립트의 명령줄 도구를 사용하여 이를 수행할 수 있는 방법이 있습니까?

답변1

루프 외부에 리디렉션을 넣기만 하면 됩니다.

while true; do
    read_folder
    process_data
    sleep 10
done | netcat $ip $port

루프 내부에서 루프의 표준 출력으로 출력이 필요한 경우 다른 파일 설명자를 통해 전환하십시오.

{
  while true; do
      read_folder
      echo tick >&3
      process_data
      sleep 10
  done | netcat $ip $port
} 3>&1

답변2

두 개의 개별 프로세스: 하나는 result.txt를 netcat에 복사합니다. Result.txt는 다른 프로세스를 통해 제공됩니다.

echo -n >result.txt
tail -f result.txt | nc ip port &
while true
do
    read_folder()
    process_data() > result.txt
    wait 10 sec
done

관련 정보