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 Resolution

Dependencies Resolved

==============================================================================================================================================================
 Package                            Arch                                Version                                       Repository                         Size
==============================================================================================================================================================
Installing:
 socat                              x86_64                              1.7.3.2-2.el7                                 base                              290 k

Transaction Summary
==============================================================================================================================================================
Install  1 Package

Total 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 transaction
  Installing : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1
  Verifying  : socat-1.7.3.2-2.el7.x86_64                                                                                                                 1/1

Installed:
  socat.x86_64 0:1.7.3.2-2.el7

Complete!
[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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go-redis源码解析:连接池原理

1. 执行命令的入口方法 redis也是通过hook执行命令&#xff0c;initHooks时&#xff0c;会将redis的hook放在第一个 通过hook调用到process方法&#xff0c;process方法内部再调用_process 2. 线程池初始化 redis在新建单客户端、sentinel客户端、cluster客户端等&#xff0c…

Apache Flink核心特性应用场景

Flink的定义 Apache Flink是一个分布式处理引擎&#xff0c;用于处理 无边界数据流&#xff0c; 有边界数据流上金秀贤有状态的计算。Flink能在所有常见的集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算如下Flink官网的一张图 Flink 与Spark的区别 Flink 中处…

《大语言模型的临床和外科应用:系统综述》

这篇题为《大语言模型的临床和外科应用&#xff1a;系统综述》的文章对大语言模型&#xff08;LLM&#xff09;目前在临床和外科环境中的应用情况进行了全面评估。 大语言模型&#xff08;LLM&#xff09;是一种先进的人工智能系统&#xff0c;可以理解和生成类似人类的文本。…

理解 LibTorch 的工作流程

深入理解 LibTorch 的工作流程 摘要 本文详细介绍了 LibTorch 的工作流程&#xff0c;包括模型定义、数据准备、训练、评估和推理。通过具体的伪代码示例&#xff0c;帮助读者深入理解 LibTorch 的基本原理和使用方法。 关键字 LibTorch, 深度学习, 动态计算图, 自动微分, …

Sharding-JDBC分库分表之SpringBoot主从配置

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 前言 在开发中&#xff0c;如果对数据库的读和写都在一个数据服务器中操作&#xff0c;面对日益增加的访问量&#x…

HI3559AV100四路IMX334非融合拼接8K视频记录

下班无事&#xff0c;写篇博客记录海思hi3559av100四路4K视频采集拼接输出8K视频Demo 一、准备工作&#xff1a; 软件&#xff1a;Win11系统、VMware虚拟机Ubuntu14、Hitool、Xshell等 硬件&#xff1a;HI3559AV100开发板4路imx334摄像头、串口线、电源等 附硬件图&#xff1…

阿里发布大模型发布图结构长文本处理智能体,超越GPT-4-128k

随着大语言模型的发展&#xff0c;处理长文本的能力成为了一个重要挑战。虽然有许多方法试图解决这个问题&#xff0c;但都存在不同程度的局限性。最近&#xff0c;阿里巴巴的研究团队提出了一个名为GraphReader的新方法&#xff0c;通过将长文本组织成图结构&#xff0c;并利用…

《RWKV》论文笔记

原文出处 [2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org) 原文笔记 What RWKV(RawKuv):Reinventing RNNs for the Transformer Era 本文贡献如下&#xff1a; 提出了 RWKV 网络架构&#xff0c;结合了RNNS 和Transformer 的优点&#xff0c;同…

【GC 垃圾回收算法和回收器】

作者&#xff1a;ofLJli 链接&#xff1a;https://juejin.cn/post/7003213289425633287?searchId20240709085629749958B21D886D4E67D4 来源&#xff1a;稀土掘金 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 概述 在JVM中主要的结构为&…

工作助手VB开发笔记(1)

1.思路 1.1 样式 样式为常驻前台的一个小窗口&#xff0c;小窗口上有三到四个按钮&#xff0c;为一级功能&#xff0c;是当前工作内容的常用功能窗口&#xff0c;有十个二级窗口&#xff0c;为选中窗口时的扩展选项&#xff0c;有若干后台功能&#xff0c;可选中至前台 可最…

C++入门基础(1)

因为6月中旬学校事情多&#xff0c;许久未更新&#xff0c;让我们继续学习吧&#xff01; 目录 前言&#xff1a; 一、命名空间&#xff1a; 1、定义&#xff1a; 2、使用&#xff1a; 3、访问命名空间域: 二、C输入、输出函数&#xff1a; 1、输入函数&#xff1a; 2、输出…

【正点原子i.MX93开发板试用连载体验】项目计划和开箱体验

本文最早发表于电子发烧友&#xff1a;【   】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)https://bbs.elecfans.com/jishu_2438354_1_1.html 有一段时间没有参加电子发…

入门PHP就来我这(高级)19 ~ 捕获sql错误

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 接着上篇我们来看下sql错误的捕获模式。 1 PDO中捕获SQL语句中的错误 在PDO中有3种方法可以捕…

【前端从入门到精通:第十二课: JS运算符及分支结构】

JavaScript运算符 算数运算符 关于自增自减运算 自增或者自减运算就是在本身的基础上进行1或者-1的操作 自增或者自减运算符可以在变量前也可以在变量后&#xff0c;但是意义不同 自增自减运算符如果在变量前&#xff0c;是先进行自增或者自减运算&#xff0c;在将变量给别人用…

Python | Leetcode Python题解之第221题最大正方形

题目&#xff1a; 题解&#xff1a; class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:if len(matrix) 0 or len(matrix[0]) 0:return 0maxSide 0rows, columns len(matrix), len(matrix[0])dp [[0] * columns for _ in range(rows)]for i in…

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型20240705

HumbleBundle7月虚幻捆绑包30件军事题材美术模型沙漠自然环境大逃杀模块化建筑可定制武器包二战现代坦克飞机道具丧尸士兵角色模型202407051607 这次HumbleBundle捆绑包是UE虚幻军事题材的&#xff0c;内容非常多。 有军事基地、赛博朋克街区、灌木丛景观环境等 HB捆绑包虚幻…

高,实在是高

go&#xff0c;去 //本义音通义通汉字“高”&#xff0c;指太阳升起、上升&#xff0c;即高上去 god | God&#xff0c;神&#xff0c;上帝 //本义音通义通“高的”&#xff0c;指太阳高高在上的&#xff0c;至高无上的 glad&#xff0c;高兴的 //本义音通义通“高了的”&#…

关于10G光模块中SR, LR, LRM, ER 和 ZR的区别?

在10Gbps&#xff08;10千兆比特每秒&#xff09;光模块中&#xff0c;SR、LR、LRM、ER 和 ZR 是用来描述不同类型的模块及其适用的传输距离和光纤类型。下面是这些缩写的详细解释&#xff1a; 1.SR (Short Range) 2.LR (Long Range) 3.LRM (Long Reach Multimode) 4.ER (E…

注解复习(java)

文章目录 注解内置注解**Deprecated**OverrideSuppressWarnings【不建议使用】Funcationallnterface 自定义注解元注解RetentionTargetDocumentedInherited 和 Repeatable 反射注解 前言&#xff1a;笔记基于动力节点 注解 注解可以标注在 类上&#xff0c;属性上&#xff0c…

鸿蒙语言基础类库:【@ohos.util.Deque (线性容器Deque)】

线性容器Deque 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 Deque&#xff08;double ended queue&#xff09;根据循环队列的数据结构实现&#xff0c;符合先进先出以及先进后出的特点&…