Socat或SOcket CAT是一個(gè)基于 Linux 命令行/終端的實(shí)用程序,用于在兩個(gè)雙向字節(jié)流之間建立和傳輸數(shù)據(jù)。 socat命令可以在多種場(chǎng)景下實(shí)現(xiàn),主要有兩個(gè)原因:
數(shù)據(jù)接收器和數(shù)據(jù)源;不同類(lèi)型并存在于一個(gè)大集合中,可用于構(gòu)造流。
這些構(gòu)造的流可以與許多地址選項(xiàng)相關(guān)聯(lián)。
socat命令可以比作與TCP和UDP協(xié)議綁定的netcat 實(shí)用程序。但是,socat比netcat具有安全優(yōu)勢(shì)(chrooting),并且還支持設(shè)備、管道、文件、SSL、SOCKS4 客戶(hù)端、TCP 套接字、代理 CONNECT、UNIX 套接字等。
Socat 命令
為了更熟悉這個(gè) Linux 命令行實(shí)用程序,我們需要列出它的一些實(shí)際應(yīng)用。以下要點(diǎn)總結(jié)了一些流行的 socat 實(shí)用程序應(yīng)用程序:
安全測(cè)試和研究。
面向 TCP 的程序進(jìn)行串行線路重定向。
作為 UNIX 套接字 shell 接口。
建立 su 和 chroot 安全環(huán)境以在共享網(wǎng)絡(luò)連接上執(zhí)行服務(wù)器/客戶(hù)端 Shell 腳本。
不同計(jì)算機(jī)上串行線路的邏輯連接。
IP6 relay。
通過(guò)攻擊弱防火墻進(jìn)行安全測(cè)試。
TCP 端口轉(zhuǎn)發(fā)。
在 Linux 中安裝 Socat 實(shí)用程序
如果您的 Linux 操作系統(tǒng)發(fā)行版上尚未安裝基于socat Linux 命令行的實(shí)用程序,請(qǐng)參考您正在使用的 Linux 操作系統(tǒng)發(fā)行版參考以下安裝命令之一:
$ sudo apt install socat [在 Debian, Ubuntu 和 Mint 上]$ sudo yum install socat [在 RHEL/CentOS/Fedora 和 Rocky Linux/AlmaLinux 上]$ sudo emerge -a net-misc/socat [在 Gentoo Linux 上]$ sudo pacman -S socat [在 Arch Linux 上]$ sudo zypper install socat [在 OpenSUSE 上]
正如已經(jīng)討論過(guò)的,socat是netcat實(shí)用程序的出色替代品,因?yàn)樗哂袕?qiáng)大和高級(jí)的功能。我們現(xiàn)在應(yīng)該能夠通過(guò) Linux 命令行環(huán)境看到一些使用socat實(shí)用程序的實(shí)際示例。 其使用語(yǔ)法如下:
# socat [options]
確保您在 Linux 機(jī)器上擁有 sudoer/root 用戶(hù)權(quán)限。
1、監(jiān)聽(tīng)特定端口
我們可以指示socat通過(guò)TCP協(xié)議監(jiān)聽(tīng)特定端口,例如80 ,并通過(guò)STDOUT打印出任何相關(guān)的發(fā)現(xiàn),如下所示。
$ sudo socat TCP4-LISTEN:80 STDOUT
TCP可以切換到其他不同的值,例如TCP6、TCP6-LISTEN和TCP4。
2. 連接到遠(yuǎn)程服務(wù)器的端口
要連接到與端口關(guān)聯(lián)的服務(wù)器,我們將運(yùn)行:
$ sudo socat – TCP480
3. TCP 端口轉(zhuǎn)發(fā)器
它也是一個(gè)有效的TCP端口轉(zhuǎn)發(fā)器。例如,端口81連接可以轉(zhuǎn)發(fā)到端口80,如下所示: 對(duì)于單個(gè)連接。
$ sudo socat TCP4-LISTEN:81 TCP480
對(duì)于多個(gè)連接。
$ sudo socat TCP4-LISTEN:81,fork,reuseaddr TCP4192.168.122.1:80
您可以使用鍵盤(pán)組合取消端口轉(zhuǎn)發(fā)[Ctrl]+c。
4.監(jiān)聽(tīng)本地端口
監(jiān)聽(tīng)本地端口www。
$ sudo socat TCP4-LISTEN:www TCP4www
5. 監(jiān)聽(tīng)遠(yuǎn)程套接字上的特定端口
如果我們想監(jiān)聽(tīng)一個(gè)特定的端口,接受它的連接并將它轉(zhuǎn)發(fā)到一個(gè)遠(yuǎn)程的 Unix 套接字,例如 mysql.sock,我們會(huì)以如下方式實(shí)現(xiàn) socat 命令:
$ sudo socat TCP-LISTEN:3309,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock
6. 基于網(wǎng)絡(luò)的消息收集器
這個(gè)簡(jiǎn)單的例子演示了基于網(wǎng)絡(luò)的消息收集器的實(shí)現(xiàn)。客戶(hù)端連接到端口 3354 成功后,文件/tmp/testing.log通過(guò)新生成的子進(jìn)程附加客戶(hù)端發(fā)送的數(shù)據(jù)。當(dāng)發(fā)現(xiàn)此文件不存在時(shí),socat會(huì)自動(dòng)創(chuàng)建此文件。
$ sudo socat -u TCP4-LISTEN:3354,reuseaddr,fork OPEN:/tmp/testing.log,creat,append
通過(guò)上面討論的幾個(gè)示例以及進(jìn)一步參考socat手冊(cè)頁(yè),我們應(yīng)該能夠深入探索它。
-
TCP
+關(guān)注
關(guān)注
8文章
1381瀏覽量
79342 -
程序
+關(guān)注
關(guān)注
117文章
3798瀏覽量
81459 -
傳輸數(shù)據(jù)
+關(guān)注
關(guān)注
1文章
127瀏覽量
16159
原文標(biāo)題:Linux 命令 socat - netcat 實(shí)用程序的出色替代品
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux場(chǎng)景下數(shù)據(jù)包是如何在協(xié)議層傳輸?shù)?/a>
![Linux<b class='flag-5'>場(chǎng)景</b><b class='flag-5'>下</b>數(shù)據(jù)包是如<b class='flag-5'>何在</b>協(xié)議層傳輸?shù)? /> </a>
</div> <div id=](https://file1.elecfans.com/web2/M00/AF/71/wKgZomVO9dyASgIqAAHIz7rgf_I871.jpg)
如何在Linux中使用htop命令
![如<b class='flag-5'>何在</b>Linux中使用htop<b class='flag-5'>命令</b>](https://file1.elecfans.com/web2/M00/B4/3E/wKgZomVtdUWAdw57AAGeUkiwT8E709.jpg)
itop4412開(kāi)發(fā)板跑的是linux系統(tǒng),如何在命令行下,寫(xiě)shell命令來(lái)關(guān)機(jī)?
以多種方式使用”kill”命令終結(jié)應(yīng)用
![以<b class='flag-5'>多種</b>方式使用”kill”<b class='flag-5'>命令</b>終結(jié)應(yīng)用](https://file.elecfans.com/web1/M00/4F/6B/o4YBAFrZp0eAfb9VAABArdHTz44154.png)
如何在PADS 3D Layout中進(jìn)行命令操作
![如<b class='flag-5'>何在</b>PADS 3D Layout中進(jìn)行<b class='flag-5'>命令</b>操作](https://file.elecfans.com/web1/M00/91/62/pIYBAFzPvtOAdUoWAAAWVDldPBg950.jpg)
如何在Linux環(huán)境下實(shí)現(xiàn)Python環(huán)境的搭建
![如<b class='flag-5'>何在</b>Linux環(huán)境<b class='flag-5'>下</b><b class='flag-5'>實(shí)現(xiàn)</b>Python環(huán)境的搭建](https://file.elecfans.com/web1/M00/C4/BB/o4YBAF9DUnmALob3AAMGQ7gWxPk521.png)
如何在51單片機(jī)上實(shí)現(xiàn)串口收發(fā)命令
如何在融合多種定位技術(shù)和通信技術(shù)的條件下實(shí)現(xiàn)萬(wàn)物互聯(lián)
超級(jí)終端場(chǎng)景下的多種設(shè)備在不同環(huán)境下如何組成一個(gè)網(wǎng)絡(luò)
![超級(jí)終端<b class='flag-5'>場(chǎng)景</b><b class='flag-5'>下</b>的<b class='flag-5'>多種</b>設(shè)備在不同環(huán)境<b class='flag-5'>下</b>如何組成一個(gè)網(wǎng)絡(luò)](https://file.elecfans.com/web2/M00/29/D8/pYYBAGHGbiyAYqSoAAAbPr7QwpM577.png)
如何在Linux使用pidof命令
如何在Linux命令行中格式化輸出xml
![如<b class='flag-5'>何在</b>Linux<b class='flag-5'>命令</b>行中格式化輸出xml](https://file.elecfans.com/web2/M00/8A/69/poYBAGO_1KeAUZmCAAEeNBWntjo994.jpg)
如何在Linux上使用粘貼命令?
在命令行下配置防火墻的基礎(chǔ)上網(wǎng)步驟
![在<b class='flag-5'>命令</b>行<b class='flag-5'>下</b>配置防火墻的基礎(chǔ)上網(wǎng)步驟](https://file1.elecfans.com/web2/M00/A5/E8/wKgaomUPsUuAecD7AAApzJHBqGI732.png)
如何在不同應(yīng)用場(chǎng)景下構(gòu)建音頻測(cè)試環(huán)境
![如<b class='flag-5'>何在</b>不同應(yīng)用<b class='flag-5'>場(chǎng)景</b><b class='flag-5'>下</b>構(gòu)建音頻測(cè)試環(huán)境](https://file1.elecfans.com/web2/M00/F7/92/wKgZomaE94qAfR1iAAAP7VZ3DFA863.png)
評(píng)論