정의된 간격으로 서버에 데이터를 보내기 위해 폴더를 지속적으로 반복하는 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