![隧道中的 Socat 执行脚本](https://linux22.com/image/95272/%E9%9A%A7%E9%81%93%E4%B8%AD%E7%9A%84%20Socat%20%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我正在运行这样的隧道:
socat TCP-LISTEN:9090,fork TCP:192.168.1.3:9090
我想运行一个脚本来执行代码,其中字符串穿过隧道。
该脚本不会更改字符串,仅独立处理字符串,但允许在两端之间不更改的情况下通过。
这可能吗?
答案1
它是现在可能与 socat v2. socat v2 引入了以下想法地址链。您可以使用以下命令运行脚本EXEC
:stdin/stdout(文件描述符 0 和 1)连接到侦听套接字,文件描述符 3 和 4 连接到发送套接字:
socat - "TCP-LISTEN:localhost:8000 | EXEC:myscript.sh | TCP:myserver:80"
在示例 myscript.sh 中:
- stdin(fd 0) - 从端口 8000 读取数据
- stdout(fd 1) - 将数据写入端口 8000
- fd 3 - 从 myserver 端口 80 读取数据
- fd 4 - 将数据写入 myserver 端口 80