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 …

STL--栈(stack)

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

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. 删…

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中快速部署多个虚拟机。 在…

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

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超大容量…

慢性肾脏病-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…

AdaBoost集成学习算法理论解读以及公式为什么这么设计?

本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。 AdaBoost集成学习算法基本上遵从Boosting集成学习思想&#xff0c;通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器&#xff0c;然后通过加权投票等方式将这些弱学习器集成起来得到…

RightFont 8.7.0 Mac专业字体管理工具

RightFont 适用于 macOS 的终极字体管理器应用程序&#xff0c;提供无缝的字体管理体验。它结合了速度、直观的功能和专业的功能&#xff0c;使用户能够轻松预览、安装、组织和共享字体。 RightFont 8.7.0 Mac下载 RightFont 8.0的新增功能 RightFont 8.0 带来了全新的智能选…

【电脑应用技巧】如何寻找电脑应用的安装包华为电脑、平板和手机资源交换

电脑的初学者可能会直接用【百度】搜索电脑应用程序的安装包&#xff0c;但是这样找到的电脑应用程序安装包经常会被加入木马或者强制捆绑一些不需要的应用装入电脑。 今天告诉大家一个得到干净电脑应用程序安装包的方法&#xff0c;就是用【联想的应用商店】。联想电脑我是一点…

比赛获奖的武林秘籍:05 电子计算机类比赛国奖队伍技术如何分工和学习内容

比赛获奖的武林秘籍&#xff1a;05 电子计算机类比赛国奖队伍技术如何分工和学习内容 摘要 本文主要介绍了在电子计算机类比赛中技术层面上的团队分工和需要学习的内容&#xff0c;分为了嵌入式硬件、嵌入式软件、视觉图像处理、机械、上位机软件开发和数据分析等六个方向&am…

文心一言 VS 讯飞星火 VS chatgpt (299)-- 算法导论22.1 3题

三、有向图 G ( V , E ) G(V,E) G(V,E) 的转置是图 G T ( V , E T ) G^{T} (V,E^{T}) GT(V,ET)&#xff0c;这里 E T { ( v , u ) ∈ V V E^{T} \{(v,u)∈ V \times V ET{(v,u)∈VV:(u,v)∈ E}$因此&#xff0c;图 G T G^{T} GT 就是将有向图 G G G中所有边的方向反过来…

java LogUtil输出日志打日志的class文件内具体方法和行号

最近琢磨怎么把日志打的更清晰&#xff0c;方便查找问题&#xff0c;又不需要在每个class内都创建Logger对象&#xff0c;还带上不同的颜色做区分&#xff0c;简直不要太爽。利用堆栈的方向顺序拿到日志的class问题。看效果&#xff0c;直接上代码。 1、demo test 2、输出效果…

【WebGIS平台】传统聚落建筑科普数字化建模平台

基于上述概括出建筑单体的特征部件&#xff0c;本文利用互联网、三维建模和地理信息等技术设计了基于浏览器/服务器&#xff08;B/S&#xff09;的传统聚落建筑科普数字化平台。该平台不仅实现了对传统聚落建筑风貌从基础到复杂的数字化再现&#xff0c;允许用户轻松在线构建从…

Linux 利用命名空间创建一个自己的“容器“

Linux 利用命名空间创建一个自己的"容器" 前置条件 创建一个目录存放容器mkdir /myapp准备静态编译busybox&#xff0c;操作系统自带的往往是依赖动态库的(本文使用的debian apt install busybox-static) 开始 使用unshare起一个独立命名空间.# 进入后/myapp目录…

【自学网络安全】:安全策略与用户认证综合实验

实验拓扑图&#xff1a; 实验任务&#xff1a; 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3、办公区设备10.0.2.10不允许访问Dmz区…