如何使用 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 传递到标准输出。
我正在学习 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 传递到标准输出。