如何使用 socat 在两个 cat 实例之间重定向输入和输出

How to redirect input and output between two instances of cat with socat

我正在学习 socat,作为练习尝试在两个不同的 shell windows 之间发送文本。以下效果很好:

socat - UNIX-LISTEN:uah
socat - UNIX-CONNECT:uah

我以为我可以用 EXEC:cat 替换一个 - 但这不起作用:

socat EXEC:cat UNIX-LISTEN:uah
socat - UNIX-CONNECT:uah

以下 stackexchange 答案表明 EXEC 应该可以工作:https://unix.stackexchange.com/a/222934

Socats“地址”双向工作。 EXEC 地址将调用进程的标准输入和标准输出连接到 Socat。因此,您的解决方案只是将在第二个终端上输入的数据(通过 Socat(2)、UNIX 域套接字、Socat(1)、cat,返回到 Socat(1)、UNIX 套接字和 Socat(2))返回到第二航站楼。

要玩EXEC:cat,最好从单向模式开始,例如:

socat -u UNIX-LISTEN:uah EXEC:cat
socat -u - UNIX-CONNECT:uah

一个双向的例子是这样的:

set +H  # turn off special handling of ! in bash
socat UNIX-LISTEN:uah EXEC:cat!!EXEC:cat
socat - UNIX-CONNECT:uah

这里,第一个 EXEC:cat 获取终端输入并将其传递给 Socat,第二个将数据从 Socat 传递到标准输出。