Linux从系统的角度提供了不同的理念和用例`socat是一个非常有趣的命令,它为我们提供了从不同类型的系统资源(如网络、文件、命令、套接字等)重定向输入和输出的能力。
为Debian、Ubuntu、Mint和Kali安装
socat
可以使用以下方法安装基于dpkg的发行版 apt
命令。
$ sudo apt install socat -y

为Fedora、CentOS、RHEL安装
我们可以安装Fedora,CentOS和RHEL如下。
$ sudo yum install socat
语法
socat的语法非常简单。我们只需要为输入和输出提供相关的选项。
socat INPUT_TYPE(OPTIONS) OUTPUT_TYPE(OPTIONS)
- 输入类型指定我们将读取的文件、流或网络套接字
- 输出类型指定我们将要编写的文件、流或网络套接字
- OPTIONS指定有关输入或输出的一些配置
类型
类型是指文件、命令、流或网络。输入和输出可以是不同的类型。例如,如果要使用系统命令作为需要指定的类型 SYSTEM
作为输入类型。类型列表
- 系统
- 传输控制协议
- UDP协议
- 高朋
- 标准或-
- 私人股本
- 管道
- …
选项
选项用于提供有关输入类型的参数和详细信息。选项是在输入后添加的,用分隔符分隔 :
. 例如,为了指定管道路径,我们将使用下面的行。
PIPE:/tmp/test/pof
写入标准输出
我们将从简单的例子开始。我们将使用 SYSTEM
并提供命令 ls
然后将输出写入标准输出。
$ socat SYSTEM:ls -

从标准输入读取
我们也可以读取标准输入。在本例中,我们将从标准输入中读取数据并写入名为 test
. 我们将使用 STDIO
指定标准输入。
$ socat STDIO FILE:/home/ismail/test,create
如我们所见,我们提供了文件名作为选项和 create
语句,该语句将在不存在新文件时创建新文件。
相关文章: 如何在命令行MS-DOS中用Set命令列出、设置、获取Windows环境变量?
打开网络套接字和侦听端口
我们也可以将网络套接字用于 socat
。我们将为侦听端口号1234打开TCP和IP版本4端口。这将是分叉进程,其中将创建新进程。输出 将是一个名为 capture
并将新到达的数据附加到文件末尾。
$ socat TCP4-LISTEN:1234,reuseaddr,fork gopen:/home/ismail/capture,seek-end=0,append
附加到文件
我们都准备好了,但我想表达一下 append
. append
选项将添加到给定文件的末尾,如下所示。
$ socat FILE:/tmp/test1 FILE:/tmp/test:append
上网冲浪超过标准输出
这可能看起来有点奇怪,但因为我们可以使用不同类型的协议和套接字。我们可以连接一个网页并检索打印到标准输出的网页。在本例中,我们将连接到 poftut.com
TCP端口80并打印到标准输出。我们将提供 GET /
从标准输入获取页面。
$ socat - TCP:poftut.com:www,crnl
