Linux网络命令:网络工具socat详解

目录

一、概述

二、基本用法

1、基本语法

2、常用选项

3、获取帮助

三、用法示例

1. 监听 TCP 端口并回显接收到的数据

2. 通过 TCP 端口转发数据到 UNIX 套接字

3. 将文件内容发送到 TCP 端口:

4. 使用伪终端进行串行通信  

5、启动一个TCP服务器

6、建立一个TCP连接

7、读取文件并发送到网络

8、从网络接收数据并保存到文件

四、高级用法

1、使用 EXEC 参数执行脚本或程序

2、设置超时和重试:

3、使用 UDP 协议:

4、绑定到特定的网络接口:

5、启用 SSL/TLS 加密:

6、启用代理服务器:

五、功能和用途

1、主要功能

(1)数据转发

(2)网络连接

(3)流量重定向

(4)数据转换

(5)代理功能

2、常见用途

3、特性

(1)协议支持

(2)数据通道

(3)安全性

(4)灵活性

六、安装

1、包管理器安装

(1)安装命令

(2)实际操作

2、编译安装

七、其他

1、注意事项

2、安全事项


一、概述

        socat 是一个多功能的网络工具,用于在 Linux 和 Unix 系统中进行双向数据传输。它的名字来源于 "Socket CAT",表示它可以像 cat 命令那样处理数据流,但主要针对网络套接字和其他数据源和目的地。

        它可以被看作是 netcat(nc)的超级集,因为它不仅支持 TCP/UDP 流,还支持多种其他类型的连接,如 UNIX 域套接字、管道、文件、命名管道、串行端口、伪终端(pty)、OpenSSL 加密的套接字等。socat 的强大之处在于它能够几乎在任意两个数据流之间创建双向通道,从而提供了极高的灵活性和强大的功能。

        socat是由 Donnie Berkholz 开发的,并且是开源的。

二、基本用法

1、基本语法

        socat 的基本语法如下:

socat [options] <address> <address>

        其中 <address> 指定了数据传输的源和目标。<address> 的格式由协议类型、地址和其他可能的选项组成,例如:

         TCP-LISTEN:8080,fork

        表示监听 TCP 端口 8080,并对每个连接创建一个新的子进程。

2、常用选项

- -d 或 --debug:增加调试信息的输出。

- -v 或 --verbose:增加输出的详细程度。

- -t 或 --timeout:设置超时时间。

- -u:使用 UNIX 域套接字而不是 TCP/IP。

- TCP-LISTEN:<port>[,options]:监听 TCP 端口。

- TCP:<host>:<port>:连接到指定的 TCP 主机和端口。

- UNIX-LISTEN:<path>[,options]:监听 UNIX 域套接字。

- UNIX:<path>:连接到 UNIX 域套接字。

- EXEC:<command>:执行命令,并将其标准输入输出作为数据通道。

- PIPE:使用管道。

- FILE:<filename>:使用文件作为数据通道。

- PTY:创建伪终端。

3、获取帮助

       在linux的命令行输入:

         socat -h

       如下图所示:

三、用法示例

1. 监听 TCP 端口并回显接收到的数据

      socat TCP-LISTEN:12345,fork EXEC:/bin/cat  

        这条命令监听 TCP 端口 12345,并对每个连接执行 cat 命令,将接收到的数据回显回去。

2. 通过 TCP 端口转发数据到 UNIX 套接字

  

   socat TCP-LISTEN:12345,fork UNIX-CONNECT:/tmp/mysocket

        监听 TCP 端口 12345,并将接收到的数据转发到 UNIX 套接字 /tmp/mysocket。

3. 将文件内容发送到 TCP 端口:

    socat FILE:/path/to/file TCP:example.com:12345

        将文件 /path/to/file 的内容发送到 example.com 的 TCP 端口 12345。

4. 使用伪终端进行串行通信  

   socat PTY,link=/dev/ttyS0 TCP:example.com:12345

        创建一个伪终端,并将其链接到 /dev/ttyS0(这通常用于模拟串行端口),然后将数据通过 TCP 发送到 example.com 的 12345 端口。注意,这里 /dev/ttyS0 只是一个示例,实际使用时可能需要不同的设备文件。

5、启动一个TCP服务器

        socat TCP-LISTEN:1234,reuseaddr,fork TCP:example.com:80

        这条命令会启动一个 TCP 服务器,监听本地端口 1234,并且将接收到的数据转发到目标服务器 example.com 的端口 80。

6、建立一个TCP连接

socat TCP:example.com:80,resolve,waitport=80 TCP:another.example.com:1234

        这条命令会建立一个到 example.com 端口 80 的 TCP 连接,并将数据转发到另一个服务器 another.example.com 的端口 1234。

7、读取文件并发送到网络

        socat - TCP:example.com:80 < /path/to/file

这条命令会读取本地文件 /path/to/file 并将其内容发送到 example.com 的端口 80。

8、从网络接收数据并保存到文件

socat TCP:example.com:80 - | socat - file:/path/to/save/file

        这条命令会从 example.com 的端口 80 接收数据,并通过管道将其保存到 /path/to/save/file 文件中。

四、高级用法

        socat 的强大之处在于它支持多种选项和参数,可以用来定制网络连接和数据转换。以下是一些高级用法:

1、使用 EXEC 参数执行脚本或程序

        在linux命令行输入如下命令:

    socat TCP:example.com:80,exec=/bin/sh

 

2、设置超时和重试:

         在linux命令行输入如下命令:

  socat TCP:example.com:80,connect-timeout=5,retries=3

 

3、使用 UDP 协议:

         在linux命令行输入如下命令:

        socat UDP4-DATAGRAM:1234->192.168.1.1:1234

 

4、绑定到特定的网络接口:

         在linux命令行输入如下命令:

          socat TCP-LISTEN:1234,interface=eth0

 

5、启用 SSL/TLS 加密:

         在linux命令行输入如下命令:

          socat TCP:example.com:443,cert=/path/to/cert.pem,key=/path/to/key.pem

 

6、启用代理服务器:

         在linux命令行输入如下命令:

          socat - PROXY:http=example.com:8080,socks5=example.com:1080

五、功能和用途

1、主要功能

(1)数据转发

        socat 可以在不同的网络协议和接口之间转发数据。例如,它可以将 TCP 数据转发到 UDP 接口,或者将数据从文件系统转发到网络。

(2)网络连接

        socat 可以用来建立网络连接,支持多种连接模式,如同步和异步。

(3)流量重定向

        可以将网络流量重定向到文件、另一个网络接口或者标准输出。

(4)数据转换

        在数据传输过程中,socat 可以将数据进行转换,如加密、压缩、编解码等。

(5)代理功能

        可以用作 SOCKS5 代理服务器,支持客户端和服务器模式。

2、常见用途

        - 端口转发:例如,将本地端口的数据转发到远程服务器的某个端口。

        - 协议桥接:在不同类型的协议之间建立桥梁,比如 UDP 到 TCP。

        - 数据捕获和分析:将网络数据重定向到文件或分析工具。

        - 服务测试:模拟客户端或服务器以测试网络服务的响应。

3、特性

(1)协议支持

        socat 支持多种协议,包括 TCP、UDP、SSL/TLS、SOCKS4、UNIX 域套接字等。

(2)数据通道

        它可以在两个不同的数据通道之间建立连接,这些通道可以是网络端口、本地文件、管道、设备文件等。

(3)安全性

        相比于 netcat,socat 提供了更多的安全选项,比如 chrooting 和 SSL/TLS 加密。

(4)灵活性

        socat 允许你构建复杂的流构造,这意味着你可以创建非常定制化的数据传输方案。

六、安装

1、包管理器安装

(1)安装命令

        在大多数 Linux 发行版中,你可以通过包管理器来安装 socat:

sudo apt-get install socat   Debian/Ubuntu

sudo yum install socat       CentOS/RHEL

sudo dnf install socat       Fedora

(2)实际操作

        在linux(centos)命令行下输入:

sudo yum install socat 

        出现如下结果:

[root@ecs-52a1 /]#
[root@ecs-52a1 /]# socat
bash: socat: command not found
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]# sudo yum install socat
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
base                                                                                                                                   | 3.6 kB  00:00:00
epel                                                                                                                                   | 4.3 kB  00:00:00
extras                                                                                                                                 | 2.9 kB  00:00:00
updates                                                                                                                                | 2.9 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved==============================================================================================================================================================Package                            Arch                                Version                                       Repository                         Size
==============================================================================================================================================================
Installing:socat                              x86_64                              1.7.3.2-2.el7                                 base                              290 kTransaction Summary
==============================================================================================================================================================
Install  1 PackageTotal download size: 290 k
Installed size: 1.1 M
Is this ok [y/d/N]: y
Downloading packages:
socat-1.7.3.2-2.el7.x86_64.rpm                                                                                                         | 290 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1Verifying  : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1Installed:socat.x86_64 0:1.7.3.2-2.el7Complete!
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]#
[root@ecs-52a1 /]# socat --help
2024/07/09 21:04:36 socat[10998] E unknown option "--help"; use option "-h" for help
[root@ecs-52a1 /]# 

        可以看出,安装成功,可以使用socat命令了。

2、编译安装

        如果你的系统没有预装 socat 或者没有合适的包,你也可以从源代码编译安装。不是本文的重点,这里就不详细介绍了。

七、其他

1、注意事项

(1)socat 命令的选项和参数很多,使用时需要仔细阅读手册页(man socat)以了解每个选项的具体作用。

(2)socat 在使用时可能需要root权限,特别是在绑定到特定网络接口或启动代理服务器时。

(3)socat 支持大量的协议,包括 TCP、UDP、HTTP、HTTPS、SOCKS5、SM

(6)长时间运行的 socat 进程可能需要考虑资源管理和错误处理机制。

2、安全事项

        socat 是一个功能强大的工具,可以用于多种数据传输和通信场景。它的灵活性和强大的功能使得它成为系统管理员和网络开发人员的宝贵工具。然而,由于其功能过于强大,使用时需要仔细配置,以避免潜在的安全风险。

(1)使用 socat 处理敏感数据时,确保使用适当的加密和权限设置。

(2)在生产环境中使用 socat 时,应该仔细配置防火墙规则以限制不必要的访问。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hi3861鸿蒙开发环境搭建

1.1 安装配置Visual Studio Code 打开Download Visual Studio Code - Mac, Linux, Windows选择下载安装Windows系统的Visual Studio Code。 下载后进行安装。Visual Studio Code安装完成后&#xff0c;通过内置的插件市场搜索并安装开发所需的插件如图所示&#xff1a; 1.2 安…

实时消息推送系统,写得太好了!

websocket 协议是在 http 协议上的一种补充协议&#xff0c;是 html5 的新特性&#xff0c;是一种持久化的协议。其实 websocket 和 http 关系并不是很大&#xff0c;不过都是属于应用层的协议&#xff0c;接下来我们就开始实战。 websocket 定时推送 本教程基于 springboot …

symbol数据类型以及应用场景

在js中,Symbol是一种基本数据类型,是在ECMAScript 6 (ES6) 中引入的新特性。表示独一无二 Symbol的定义 Symbol是不完整的构造函数&#xff0c;创建symbol对象时不需要new操作符,原因是通过 new 实例化的结果是一个 object 对象&#xff0c;而不是原始类型的 symbol。 var s…

STL--栈(stack)

stack 栈是一种只在一端(栈顶)进行数据插入(入栈)和删除(出栈)的数据结构,它满足后进先出(LIFO)的特性。 使用push(入栈)将数据放入stack,使用pop(出栈)将元素从容器中移除。 使用stack,必须包含头文件: #include<stack>在头文件中,class stack定义如下: namespace std…

Druid 连接池在很多方面表现出色,但在实际应用中也可能会遇到一些缺陷或问题。

Druid 连接池是阿里巴巴开源的一个功能强大的数据库连接池&#xff0c;它具有高性能、可靠性、可管理性、安全性和扩展性等特点。然而&#xff0c;尽管 Druid 连接池在很多方面表现出色&#xff0c;但在实际应用中也可能会遇到一些缺陷或问题。 1. **连接耗尽问题**&#xff1…

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar

13 - matlab m_map地学绘图工具基础函数 - 介绍创建管理颜色映射的函数m_colmap和轮廓图绘制颜色条的函数m_contfbar 0. 引言1. 关于m_colmap2. 关于m_contfbar3. 结语 0. 引言 本篇介绍下m_map中用于创建和管理颜色映射函数&#xff08;m_colmap&#xff09;和 为轮廓图绘制颜…

基于深度学习的电影推荐系统

1 项目介绍 1.1 研究目的和意义 在电子商务日益繁荣的今天&#xff0c;精准预测商品销售数据成为商家提升运营效率、优化库存管理以及制定营销策略的关键。为此&#xff0c;开发了一个基于深度学习的商品销售数据预测系统&#xff0c;该系统利用Python编程语言与Django框架&a…

SQLite 命令行客户端 + Windows 批处理应用

SQLite 命令行客户端 Windows 批处理应用 下载 SQLite 客户端1. Bat 辅助脚本1. 执行SQL.bat执行 2. 导出Excel.bat执行效果 3. 导出HTML.bat执行效果 4. 清空-订单表.bat5. 订单表.bat 2. 测试 SQL1. 创建订单表.sql2. 插入订单表.sql3. 查询订单表.sql4. 清空订单表.sql5. 删…

Qt Qwt 图表库详解及使用

文章目录 Qt Qwt 图表库详解及使用一、Qwt 概述二、安装 Qwt1. 下载和编译 Qwt2. 在项目中使用 Qwt三、Qwt 的基本使用1. 创建一个简单的折线图2. 添加图例和自定义样式四、Qwt 的交互功能1. 启用缩放和平移2. 启用数据点选择五、Qwt 的高级特性1. 实时数据更新2. 多轴绘图六、…

nvm 管理多版本 node

1、下载 先不安装node 下载 nvm 1.1.10-setup.zip 解压&#xff1a;nvm&#xff1a;https://nvm.uihtm.com/ 新建nodejs/node、nodejs/nvm文件夹用于存放node版本和nvm安装路径 安装nvm&#xff1a;上述链接有安装教程 查看是否安装成功&#xff1a;重新打开cmd 输入 nvm nv…

Hyper-V克隆虚拟机教程分享!

方法1. 使用导出导入功能克隆Hyper-V虚拟机 导出和导入是Hyper-V服务器备份和克隆的一种比较有效的方法。使用此功能&#xff0c;您可以创建Hyper-V虚拟机模板&#xff0c;其中包括软件、VM CPU、RAM和其他设备的配置&#xff0c;这有助于在Hyper-V中快速部署多个虚拟机。 在…

深入理解基本数据结构:数组详解

引言 在计算机科学中&#xff0c;数据结构是存储、组织和管理数据的方式。数组作为最基础的数据结构之一&#xff0c;广泛应用于各种编程场景。在这篇博客中&#xff0c;我们将详细探讨数组的定义、特点、操作及其在不同编程语言中的实现。 什么是数组&#xff1f; 数组是一种…

原生android的内存性能提升方面的方案大致设计

一 测试目标&#xff1a; 以满足用户设备的内存性能和不杀后台为目标。 1&#xff1a;满足用户设备的内存性能是指不出现因为内存原因导致的安卓设备死机&#xff0c;卡顿等问题。 2&#xff1a;满足不杀后台是指整个设备使用时&#xff0c;不出现后台app被杀。 通常是估算如果…

构造函数注入@RequiredArgsConstructor

Api(tags "用户管理接口") RequiredArgsConstructor RestController RequestMapping("users") public class UserController {private final IUserService userService;PostMappingApiOperation("新增用户")public void saveUser(RequestBody U…

输入框输入值之后,检索表格中是否存在输入框中的值,存在就让当前文字为红色

this.searchValue为输入框的值 createKeywordHtml_content(data) { if (data undefined) { return data; } if (typeof data ! string) { data String(data) } let value data.replace(this.searchValue, <span style"color:#FF5555">$&</span>…

来一组爱胜品1133DN PRO打印机的照片

刚拆箱的机器正面照片 打开前盖正准备要安装原装耗材 下图是原装耗材&#xff0c;硒鼓型号是DR2833、碳粉盒型号是TN2833,鼓组件打印页数12000页&#xff0c;TN2833标准容量粉盒打印页数1600页/5%覆盖率&#xff0c;TN2833H大容量粉盒打印页数3000页/5%覆盖率、TN2833L超大容量…

Intel base instruction -- cvttsd2si

将截断双精度浮点数并转换为有符号整数。 4958: 8b 05 82 49 00 00 mov 0x4982(%rip),%eax # 92e0 <age_to_colorBase> // eaxgvar_92e0 495e: 48 8d 15 7b 49 00 00 lea 0x497b(%rip),%rdx # 92e0 <age_to_colorBase&g…

慢性肾脏病-MR+转录组文献

Identification of novel therapeutic targets for chronic kidney disease and kidney function by integrating multi-omics proteome with transcriptome - PMC (nih.gov) 数据和材料 Our pQTL summary data were acquired from previously published studies and can be f…

三. 根文件系统构建

根文件系统构建好以后就意味着我们已经拥有了一个完整的,可以运行的最小系统. 一. 根文件系统简介 根文件系统一般也叫做 rootfs&#xff0c;那么什么叫根文件系统&#xff1f;Linux 中的根文件系统更像是一个文件夹或者叫做目录,在这个目录里面会有很多的子目录,目录下的文件…

《妃梦千年》第二十九章:朝中波澜

第二十九章&#xff1a;朝中波澜 自从被封为护国夫人后&#xff0c;林清婉在大周的地位愈发稳固&#xff0c;她的智慧和勇气不仅赢得了皇上的信任&#xff0c;也获得了朝中众臣的敬佩。然而&#xff0c;这也引来了部分人的嫉妒和不满&#xff0c;他们开始在暗中谋划&#xff0…