8 個實用的 Linux netcat 命令示例
Netcat 或者叫 nc 是 Linux 下的一個用於除錯和檢查網路工具包。可用於建立 TCP/IP 連線,最大的用途就是用來處理 TCP/UDP 套接字。
這裡我們將通過一些例項來學習 netcat 命令。
1. 在伺服器-客戶端架構上使用 Netcat
netcat 工具可執行於伺服器模式,偵聽指定埠
$ nc -l 2389
然後你可以使用客戶端模式來連線到 2389 埠:
$ nc localhost 2389
現在如果你輸入一些文字,它將被髮送到伺服器端:
$ nc localhost 2389 HI, oschina
在伺服器的終端視窗將會顯示下面內容:
$ nc -l 2389 HI, oschina
2. 使用 Netcat 來傳輸檔案
netcat 工具還可用來傳輸檔案,在客戶端,假設我們有一個 testfile 檔案:
$ cat testfile hello oschina
而在伺服器端有一個空檔名為 test
然後我們使用如下命令來啟用伺服器端:
$ nc -l 2389 > test
緊接著執行客戶端:
cat testfile | nc localhost 2389
然後你停止伺服器端,你可以檢視 test 內容就是剛才客戶端傳過來的 testfile 檔案的內容:
$ cat test hello oschina
3. Netcat 支援超時控制
多數情況我們不希望連線一直保持,那麼我們可以使用 -w 引數來指定連線的空閒超時時間,該引數緊接一個數值,代表秒數,如果連線超過指定時間則連線會被終止。
伺服器:
nc -l 2389
客戶端:
$ nc -w 10 localhost 2389
該連線將在 10 秒後中斷。
注意: 不要在伺服器端同時使用 -w 和 -l 引數,因為 -w 引數將在伺服器端無效果。
4. Netcat 支援 IPv6
netcat 的 -4 和 -6 引數用來指定 IP 地址型別,分別是 IPv4 和 IPv6:
伺服器端:
$ nc -4 -l 2389
客戶端:
$ nc -4 localhost 2389
然後我們可以使用 netstat 命令來檢視網路的情況:
$ netstat | grep 2389 tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED
接下來我們看看IPv6 的情況:
伺服器端:
$ nc -6 -l 2389
客戶端:
$ nc -6 localhost 2389
再次執行 netstat 命令:
$ netstat | grep 2389 tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED
字首是 tcp6 表示使用的是 IPv6 的地址。
5. 在 Netcat 中禁止從標準輸入中讀取資料
該功能使用 -d 引數,請看下面例子:
伺服器端:
$ nc -l 2389
客戶端:
$ nc -d localhost 2389 Hi
你輸入的 Hi 文字並不會送到伺服器端。
6. 強制 Netcat 伺服器端保持啟動狀態
如果連線到伺服器的客戶端斷開連線,那麼伺服器端也會跟著退出。
伺服器端:
$ nc -l 2389
客戶端:
$ nc localhost 2389 ^C
伺服器端:
$ nc -l 2389 $
上述例子中,但客戶端斷開時伺服器端也立即退出。
我們可以通過 -k 引數來控制讓伺服器不會因為客戶端的斷開連線而退出。
伺服器端:
$ nc -k -l 2389
客戶端:
$ nc localhost 2389 ^C
伺服器端:
$ nc -k -l 2389
7. 配置 Netcat 客戶端不會因為 EOF 而退出
Netcat 客戶端可以通過 -q 引數來控制接收到 EOF 後隔多長時間才退出,該引數的單位是秒:
客戶端使用如下方式啟動:
nc -q 5 localhost 2389
現在如果客戶端接收到 EOF ,它將等待 5 秒後退出。
8. 使用 Netcat 來處理 UDP 協議
netcat 預設是使用 TCP 協議,但也支援 UDP,可使用 -u 引數來啟用 UDP 協議通訊。
伺服器端:
$ nc -4 -u -l 2389
客戶端:
$ nc -4 -u localhost 2389
這樣客戶端和伺服器端都使用了 UDP 協議,可通過 netstat 命令來檢視:
$ netstat | grep 2389 udp 0 0 localhost:42634 localhost:2389 ESTABLISHED
英文原文:nc-command-examples
相關文章
- Linux 中 17 個 tar 命令實用示例Linux
- netcat 命令介紹及使用示例
- Linux 下 cut 命令的 4 個基礎實用的示例Linux
- 8個Date命令使用示例
- 媽咪,我找到了!15個實用的Linux find命令示例Linux
- 媽咪 我找到了! 15個實用的Linux find命令示例Linux
- 10 個 Linux 中的 passwd 命令示例Linux
- 最最實用的30個Linux命令!Linux
- Linux 命令列:find 的 26 個用法示例Linux命令列
- Linux中的15個基本‘ls’命令示例Linux
- 在 Linux 下 9 個有用的 touch 命令示例Linux
- 工作中5個實用的Linux命令Linux
- Linux Netcat命令:網路工具中的瑞士軍刀Linux
- Linux Netcat 命令——網路工具中的瑞士軍刀Linux
- 實用的Linux命令Linux
- 每天一個 Linux 命令(8):cp 命令Linux
- Linux中11個比較實用的命令列Linux命令列
- Linux jobs 命令示例Linux
- Linux Netcat 命令—超級網路工具詳解Linux
- Oracle bbed 五個 實用示例Oracle
- netcat 常用的幾個命令,可用於建立TCP/UDP連線TCPUDP
- 8 個你不一定全都瞭解的 rm 命令示例
- 爹地,我找到了!15個極好的Linux find命令示例Linux
- 爹地 我找到了! 15個極好的Linux find命令示例Linux
- 實用的Linux命令列技巧Linux命令列
- 透過6個示例帶你掌握Linux sed命令!Linux
- 11 個鮮為人知卻超實用的 Linux 命令!Linux
- Linux中ps命令的功能及示例!Linux
- 15個Linux Grep命令使用例項(實用、常用)Linux
- 8個實用的Java Streams APIJavaAPI
- Linux cp 命令的15個示例 - 建立檔案和目錄的副本Linux
- Linux 常見命令示例【一】Linux
- 5個相見恨晚的Linux命令,每一個都非常實用Linux
- 25個實用的VMware ESXi命令
- 實用處理字串的linux命令字串Linux
- 超實用的 Linux 高階命令!Linux
- 實用Unix/Linux 命令(轉)Linux
- 給新手的 20 多個 FFmpeg 命令示例