![用于日志记录的 TCP 连接桥/代理](https://linux22.com/image/741131/%E7%94%A8%E4%BA%8E%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E7%9A%84%20TCP%20%E8%BF%9E%E6%8E%A5%E6%A1%A5%2F%E4%BB%A3%E7%90%86.png)
简化的场景:
我有一个电话系统,它可以注销端口 6543 上的每个操作。我还有一个监听器(现有应用程序),它连接到电话系统(一个 Linux 机顶盒)并处理来自该电话系统的所有数据(字节流)。电话系统每次只能有一个连接。
我需要的:
一种连接到电话系统并将字节流转储到文件的方法,并让监听器应用程序(我无法控制但可以配置 IP 和它将连接到的端口)连接到我的进程,以便它像直接连接到电话系统一样工作。
我想做的事:
- 连接到电话系统并将数据转储到文件中(使用我希望您建议的“实用程序”)。
- 允许监听器进程连接到“实用程序”,以便它可以连续地继续正常工作。
一定有什么巧妙的办法是我无法想到/知道的来做到这一点?
我所说的“实用程序”可以是 bash 脚本、un*x 实用程序、一些聪明的 gnu 工具、任何现有的 github 项目等等。
答案1
以下是我目前发现的内容:
(netcat 也许就是我所寻找的!)
mkfifo phonesystem.fifo
脚本 :
#!/bin/bash
PHONE_IP=192.168.167.166
PHONE_PORT=6543
LISTENING_PORT=${PHONE_PORT}
CURRENT=$(date +%F#%T | sed -e 's/:/./g')
cat phonesystem.fifo | nc -l -p ${LISTENING_PORT} | tee ${CURRENT}.ApplicationListener.log | nc ${PHONE_IP} ${PHONE_PORT} | tee ${CURRENT}.PhoneSystem.log 1> phonesystem.fifo
然后,我将配置我的“监听器应用程序”来连接到端口上的盒子 IP,6543
而不是将其连接到端口上的电话系统 IP 6543
...
想知道我是否可以多路复用输出,以便我可以多次连接到我的盒子并获取所有连接的流......