8個(gè)實(shí)用的Linux netcat命令示例

2012-04-24 17:10:04來(lái)源:Linux Today作者:

Netcat 或者叫 nc 是 Linux 下的一個(gè)用于調(diào)試和檢查網(wǎng)絡(luò)工具包。可用于創(chuàng)建 TCP/IP 連接,最大的用途就是用來(lái)處理 TCP/UDP 套接字。

Netcat 或者叫 nc 是 Linux 下的一個(gè)用于調(diào)試和檢查網(wǎng)絡(luò)工具包?捎糜趧(chuàng)建 TCP/IP 連接,最大的用途就是用來(lái)處理 TCP/UDP 套接字。

這里我們將通過(guò)一些實(shí)例來(lái)學(xué)習(xí) netcat 命令。

1. 在服務(wù)器-客戶端架構(gòu)上使用 Netcat

netcat 工具可運(yùn)行于服務(wù)器模式,偵聽(tīng)指定端口

$ nc -l 2389

然后你可以使用客戶端模式來(lái)連接到 2389 端口:

$ nc localhost 2389

現(xiàn)在如果你輸入一些文本,它將被發(fā)送到服務(wù)器端:

$ nc localhost 2389
HI, linux

在服務(wù)器的終端窗口將會(huì)顯示下面內(nèi)容:

$ nc -l 2389
HI, linux

2. 使用 Netcat 來(lái)傳輸文件

netcat 工具還可用來(lái)傳輸文件,在客戶端,假設(shè)我們有一個(gè) testfile 文件:

$ cat testfile
hello linux

而在服務(wù)器端有一個(gè)空文件名為 test

然后我們使用如下命令來(lái)啟用服務(wù)器端:

$ nc -l 2389 > test

緊接著運(yùn)行客戶端:

cat testfile | nc localhost 2389

然后你停止服務(wù)器端,你可以查看 test 內(nèi)容就是剛才客戶端傳過(guò)來(lái)的 testfile 文件的內(nèi)容:

$ cat test
hello linux

3. Netcat 支持超時(shí)控制

多數(shù)情況我們不希望連接一直保持,那么我們可以使用 -w 參數(shù)來(lái)指定連接的空閑超時(shí)時(shí)間,該參數(shù)緊接一個(gè)數(shù)值,代表秒數(shù),如果連接超過(guò)指定時(shí)間則連接會(huì)被終止。

服務(wù)器:

nc -l 2389

客戶端:

$ nc -w 10 localhost 2389

該連接將在 10 秒后中斷。

注意: 不要在服務(wù)器端同時(shí)使用 -w 和 -l 參數(shù),因?yàn)?-w 參數(shù)將在服務(wù)器端無(wú)效果。

4. Netcat 支持 IPv6

netcat 的 -4 和 -6 參數(shù)用來(lái)指定 IP 地址類型,分別是 IPv4 和 IPv6:

服務(wù)器端:

$ nc -4 -l 2389

客戶端:

$ nc -4 localhost 2389

然后我們可以使用 netstat 命令來(lái)查看網(wǎng)絡(luò)的情況:

$ netstat | grep 2389
tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED
tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED

接下來(lái)我們看看IPv6 的情況:

服務(wù)器端:

$ nc -6 -l 2389

客戶端:

$ nc -6 localhost 2389

再次運(yùn)行 netstat 命令:

$ netstat | grep 2389
tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED
tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED

前綴是 tcp6 表示使用的是 IPv6 的地址。

5. 在 Netcat 中禁止從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)

該功能使用 -d 參數(shù),請(qǐng)看下面例子:

服務(wù)器端:

$ nc -l 2389

客戶端:

$ nc -d localhost 2389
Hi

你輸入的 Hi 文本并不會(huì)送到服務(wù)器端。

6. 強(qiáng)制 Netcat 服務(wù)器端保持啟動(dòng)狀態(tài)

如果連接到服務(wù)器的客戶端斷開(kāi)連接,那么服務(wù)器端也會(huì)跟著退出。

服務(wù)器端:

$ nc -l 2389

客戶端:

$ nc localhost 2389
^C

服務(wù)器端:

$ nc -l 2389
$

上述例子中,但客戶端斷開(kāi)時(shí)服務(wù)器端也立即退出。

我們可以通過(guò) -k 參數(shù)來(lái)控制讓服務(wù)器不會(huì)因?yàn)榭蛻舳说臄嚅_(kāi)連接而退出。

服務(wù)器端:

$ nc -k -l 2389

客戶端:

$ nc localhost 2389
^C

服務(wù)器端:

$ nc -k -l 2389

7. 配置 Netcat 客戶端不會(huì)因?yàn)?EOF 而退出

Netcat 客戶端可以通過(guò) -q 參數(shù)來(lái)控制接收到 EOF 后隔多長(zhǎng)時(shí)間才退出,該參數(shù)的單位是秒:

客戶端使用如下方式啟動(dòng):

nc  -q 5  localhost 2389

現(xiàn)在如果客戶端接收到 EOF ,它將等待 5 秒后退出。

8. 使用 Netcat 來(lái)處理 UDP 協(xié)議

netcat 默認(rèn)是使用 TCP 協(xié)議,但也支持 UDP,可使用 -u 參數(shù)來(lái)啟用 UDP 協(xié)議通訊。

服務(wù)器端:

$ nc -4 -u -l 2389

客戶端:

$ nc -4 -u localhost 2389

這樣客戶端和服務(wù)器端都使用了 UDP 協(xié)議,可通過(guò) netstat 命令來(lái)查看:

$ netstat | grep 2389
udp 0 0 localhost:42634 localhost:2389 ESTABLISHED

英文原文:http://www.thegeekstuff.com/2012/04/nc-command-examples/

關(guān)鍵詞:Linuxnetcat命令

贊助商鏈接: