socat-命令使用
简介
socat
, SOcket CAT, 主要用于为两个 data sources 建立联系. (可以是 file, Unix socket, UDP, TCP 或标准输入)
socat
支持 two-way communication, 即发送方和接收方是双向的. (身份可以互换)
安装
在 Archlinux 上为:
1 |
|
基本语法
1 |
|
连接 STDIO 到一个 TCP stream source
这里用 nc (“netcat”) 命令做示例. 在一个终端中运行:
1 |
|
(-l
指 “listen”, 监听本地的 1234 端口)
在另一个终端中用 socat
将当前 standard input 与 TCP stream 相关联:
1 |
|
此时在运行 socat
的终端中键入字符并回车, 则会显示在 nc
终端中.
监听一个 port 并将其与另一个 port 关联
1 |
|
在另一个终端运行:
1 |
|
键入 GET /
测试.
单向流模式
默认情况下 socat
是 bidirectional stream protocol. 可以用 0u
选项启用 unidirectional mode.
创建文件
1 |
|
此时, 第一个 address 的 stream data 便会流入第二个 address 中.
反过来可以当 cat
用:
1 |
|
使用 -U
参数时行为反过来. (即第二个 address 的 data 流入第一个 address)
参数添加中, 和 : 的区别
:
用于分隔不同的地址组件,TCP:www.google.com:80
, 这里的 “协议”, “目标主机名” 和 “目标端口号” 就是三种地址组件,
用于分隔同一地址组件的不同参数, 如TCP-LISTEN:1234,fork,reuseaddr
, 这里TCP-LISTEN
和1234
是不同地址组件,fork
和reuseaddr
都是 “端口号” 的参数
连接两个伪终端
1 |
|
PTY
, “Pseudo Terminal”, 一种特殊的设备, 可以模拟真实终端的行为link=
是PTY
类型的参数
socat-命令使用
http://example.com/2024/05/03/socat-命令使用/