如何与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

相关内容