使用socat将一个TTY流中继到多个TCP/IP目的地,再加上一个“嗅探器”程序

使用socat将一个TTY流中继到多个TCP/IP目的地,再加上一个“嗅探器”程序,tcp,tty,netcat,socat,Tcp,Tty,Netcat,Socat,使用嵌入式Linux开发板,我需要组装一个小部件,它可以执行以下操作: 通过物理串行端口读取数据包,并将这些数据包中继到多个IP地址(最多20个);从配置文件读取IP目标。 还可以使用自定义程序“嗅探”这些串行数据包,可能是用c编写的。 作为一个有编程背景的人,对我来说最明显的解决方案是从头开始创建一个c程序来实现上述目标。然而,由于这是我需要快速组合起来的东西,并且因为我需要一个借口来了解更多关于我不太擅长的现有Linux命令行程序和脚本编写,我想知道是否可以通过现有的命令行程序和shell脚

使用嵌入式Linux开发板,我需要组装一个小部件,它可以执行以下操作:

通过物理串行端口读取数据包,并将这些数据包中继到多个IP地址(最多20个);从配置文件读取IP目标。 还可以使用自定义程序“嗅探”这些串行数据包,可能是用c编写的。 作为一个有编程背景的人,对我来说最明显的解决方案是从头开始创建一个c程序来实现上述目标。然而,由于这是我需要快速组合起来的东西,并且因为我需要一个借口来了解更多关于我不太擅长的现有Linux命令行程序和脚本编写,我想知道是否可以通过现有的命令行程序和shell脚本来实现这一点。然后,我从头开始写的唯一部分就是我的数据包嗅探器,称之为嗅探器

我知道netcat和socat可以用于设备和地址之间的中继,我已经开始尝试这两种方法。我想到,通过运行多个socat实例将串行数据从TTY端口中继到远程IP地址,可以避免开发和测试TCP/IP软件。socat的每个实例都可以处理特定的远程IP地址


这听起来可行吗?如果可行,我如何有效地“多路复用”来自/dev/ttyS0的流,比如说作为多个socat实例和一个sniffer.c实例的源?一种方法是将从/dev/ttyS0读取的数据中继到缓存文件,然后让我的socat实例和sniffer.c都以只读方式访问该文件吗?

Hey Trevor。我正在研究类似的问题。我想知道你问这个问题后是否找到了解决办法。你好。最后,我放弃了尝试使用任何标准实用程序来实现这一点的想法,并用C语言从头开始编写了所有内容。我只是想马上完成这个项目。也许socat和tee组合可以做到这一点,但我自己从未尝试过。例如,这里是将传入流量转发到两个端口的示例