天天看點

socat Linux網絡通信工具

socat的介紹與使用

Socat 是 Linux 下的一個多功能的網絡工具,名字來由是 「Socket CAT」。其功能與有瑞士軍刀之稱的 Netcat 類似,可以看做是 Netcat 的加強版。

Socat 的主要特點就是在兩個資料流之間建立通道,且支援衆多協定和連結方式。如 IP、TCP、 UDP、IPv6、PIPE、EXEC、System、Open、Proxy、Openssl、Socket等。

Socat 的官方網站:http://www.dest-unreach.org/socat/

wget http://www.dest-unreach.org/socat/download/socat-1.7.0.1.tar.gz
tar -zxvf socat-1.7.0.1.tar.gz
cd socat-1.7.0.1
./configure --disable-fips
make && make install      

往遠端192.168.1.80的5060端口發送資料包hello,可以使用以下指令:

echo “hello” | socat - udp4-datagram:192.168.11.172:37777

往本地UDP端口發送資料包,可以使用如下指令

echo “hello” > /dev/udp/192.168.1.81/5060

Socat 基本文法

1

socat [options] <address> <address>

其中這 2 個 address 就是關鍵了,address 類似于一個檔案描述符,Socat 所做的工作就是在 2 個 address 指定的描述符間建立一個 pipe 用于發送和接收資料。幾個常用的 address 描述方式如下:

-,STDIN,STDOUT 表示标準輸入輸出,可以就用一個橫杠代替。

/var/log/syslog 打開一個檔案作為資料流,可以是任意路徑。

TCP:: 建立一個 TCP 連接配接作為資料流,TCP 也可以替換為 UDP 。

TCP-LISTEN: 建立 一個 TCP 監聽端口,TCP 也可以替換為 UDP。

EXEC: 執行一個程式作為資料流。

以上規則中前面的 TCP 等都可以小寫,在這些描述後可以附加一些選項,用逗号隔開。如 fork,reuseaddr,stdin,stdout,ctty 等。

繼續閱讀