8 個(gè)實用(yòng)的(de) Linux ←♣β≠netcat 命令示例

2018-08-27 16:52

 

Netcat 或者叫 nc 是(shì) Linux 下(xià)的(d♦∏e)一(yī)個(gè)用(yòng)于調試和(hé)檢查網φ'絡工(gōng)具包。可(kě)用(yòng)于創建 ​εTCP/IP 連接,最大(dà)的(de♠"☆​)用(yòng)途就(jiù)是(shì)用(yòng)來(lái)¥♦☆處理(lǐ) TCP/UDP 套接字。

這(zhè)裡(lǐ)我們将通(tōng)過一(↑ ↓yī)些(xiē)實例來(lái)學習(x★←÷í) netcat 命令。

 

1. 在服務器(qì)-客戶端架構上(s∏​‍hàng)使用(yòng) Netcat

 

netcat 工(gōng)具可(kě)運行(xíng)于服務器(qì)模式 $α,偵聽(tīng)指定端口

 

$ nc -l 2389

 

2. 使用(yòng) Netcat 來(lái)傳輸文€φ ♦(wén)件(jiàn)

 

netcat 工(gōng)具還(hái)可(kě)用(±€αyòng)來(lái)傳輸文(wén)件(jiàn)∑←,在客戶端,假設我們有(yǒu)一(yī)個(gè) tes±↕tfile 文(wén)件(jiàn):

 

$ cat testfilehello oschina

 

而在服務器(qì)端有(yǒu)一(yī)個(gè)空(kōng)文(wén)>"♠件(jiàn)名為(wèi) test

 

然後我們使用(yòng)如(rú)下(xià)命令≠↑來(lái)啓用(yòng)服務器(qì)端¶&§:

 

$ nc -l 2389 > test

 

緊接著(zhe)運行(xíng)客戶端:

 

cat testfile | nc loδ©calhost 2389

 

然後你(nǐ)停止服務器(qì)端,你(nǐ)可(kě♠λα)以查看(kàn) test 內(nèi)容就(jiù)是(shì)剛才客戶端£$傳過來(lái)的(de) testfile&↔" 文(wén)件(jiàn)的(de)內(nèi)容:

 

$ cat testhello oschina

 

3. Netcat 支持超時(shí)控制<‌​(zhì)

 

多(duō)數(shù)情況我們不(bù)希望連接一β←(yī)直保持,那(nà)麽我們可(kěΩ×)以使用(yòng) -w 參數(shù)來(lái)指定連接的(de)空↑∞φ±(kōng)閑超時(shí)時(shí)間(jiān),該參數↑σ$€(shù)緊接一(yī)個(gè)數(shù)值,代表秒(miǎoγβ¶)數(shù),如(rú)果連接超過指定時(shí)間(ji<δān)則連接會(huì)被終止。

 

服務器(qì):

 

nc -l 2389

 

客戶端:

 

$ nc -w 10 localhost 2389

 

該連接将在 10 秒(miǎo)後中斷。

 

注意: 不(bù)要(yào)在服務器(qì)端同時(shí)§✘$↔使用(yòng) -w 和(hé) -l≠₹÷ 參數(shù),因為(wèi) -w 參數(shù)将在服務器(qì)端無πα效果。

 

然後你(nǐ)可(kě)以使用(yòng)客戶端模式來(♦φ↕lái)連接到(dào) 2389 端口:£ ≥>

 

$ nc localhost 2389

 

現(xiàn)在如(rú)果你(nǐ)輸入一(yī)些(xiα™Ωē)文(wén)本,它将被發送到(dào)服務器(qì)端:

 

$ nc localhost 2389HI, oschina

 

在服務器(qì)的(de)終端窗(chuāng)口将‍×∏會(huì)顯示下(xià)面內(nèi)容:

 

$ nc -l 2389HI, oschina

 

4. Netcat 支持 IPv6

 

netcat 的(de) -4 和(hé) -6 參ππ✔α數(shù)用(yòng)來(lái)指定 IP "§♥地(dì)址類型,分(fēn)别是(shì) IPv4 和(hé) IP≈♣v6:

 

服務器(qì)端:

 

$ nc -4 -l 2389

 

客戶端:

 

$ nc -4 localhost 2389

 

然後我們可(kě)以使用(yòng) netstat 命​<​令來(lái)查看(kàn)網絡的(de®λ∞)情況:

 

$ netstat | grep 2389tcp        0    §$  0 localhost:2389       ↕¥β™   localhost:50851         ESTABLISHED☆£σ
tcp        0      0 localhost:5085£δ•®1         localhost:2389      ©<≤    ESTABLISHED

 

接下(xià)來(lái)我們看(kàn)看(kàn)IPv6 £♣‍α的(de)情況:

 

服務器(qì)端:

 

$ nc -6 -l 2389

 

客戶端:

 

$ nc -6 localhost 2389

 

再次運行(xíng) netstat 命令:

 

$ netstat | grep 2389t ≤‌±cp6       0      0 localhost:2389  ←₩σ        localhost:332ε&34         ESTABLISHED
tcp6   &ε♥¥    0      0 localhost:3₽™₩3234         localhost:2389  ε☆§         ESTABLISHED

 

前綴是(shì) tcp6 表示使用(yòng)的(de★©₽☆)是(shì) IPv6 的(de)地(dì)©€←↓址。

 

5. 在 Netcat 中禁止從(cóng)标準輸入中讀(dú)取數(→∑≥shù)據

 

該功能(néng)使用(yòng) -d 參數(shù),請(qǐng)看λ₹(kàn)下(xià)面例子(zǐ):

 

服務器(qì)端:

 

$ nc -l 2389

 

客戶端:

 

$ nc -d localhost 2389Hi

 

你(nǐ)輸入的(de) Hi 文(wén)↑←φπ本并不(bù)會(huì)送到(dào)服務器(qì)端。

 

6. 強制(zhì) Netcat 服務器(qì)端÷​‌ 保持啓動狀态

 

如(rú)果連接到(dào)服務器(qì)的(de)β™≤客戶端斷開(kāi)連接,那(nà)麽服務器(qì)端也(yě)α≤會(huì)跟著(zhe)退出。

 

服務器(qì)端:

 

$ nc -l 2389

 

客戶端:

 

$ nc localhost 2389^C

 

服務器(qì)端:

 

$ nc -l 2389$

 

上(shàng)述例子(zǐ)中,但(dàn)客戶端斷開(kāi)時(sh♠♥≤∞í)服務器(qì)端也(yě)立即退出。

 

我們可(kě)以通(tōng)過 -k ←§¶參數(shù)來(lái)控制(zhì)讓服務器(qì)不(bù)會(huìλ&)因為(wèi)客戶端的(de)斷開(kāi)連接而退出。

 

服務器(qì)端:

 

$ nc -k -l 2389

 

客戶端:

 

$ nc localhost 2389^C

 

服務器(qì)端:

 

$ nc -k -l 2389

 

7. 配置 Netcat 客戶端不(bù)會(huβ§λ≠ì)因為(wèi) EOF 而退出

 

Netcat 客戶端可(kě)以通(tōng)過‌£↔ -q 參數(shù)來(lái)控制(∏>zhì)接收到(dào) EOF 後隔多(duō)長(chá→♦ng)時(shí)間(jiān)才退出,該參數(shù)的(de$₽©)單位是(shì)秒(miǎo):

 

客戶端使用(yòng)如(rú)下(xià)方式啓動:

 

nc  -q 5  localhost 23$∑89

 

現(xiàn)在如(rú)果客戶端接收到 ∏ ≥(dào) EOF ,它将等待 5 秒(miǎo)後退出。

 

 8. 使用(yòng) Netcat 來(lái)處理‍←(lǐ) UDP 協議(yì)

 

netcat 默認是(shì)使用(yòn≈"g) TCP 協議(yì),但(dàn)也(yě)支持 UDP,可‍↕(kě)使用(yòng) -u 參數(shù)來(lái)啓用(yò≠↕π®ng) UDP 協議(yì)通(tōng)訊。

 

服務器(qì)端:

 

$ nc -4 -u -l 2389

 

客戶端:

 

$ nc -4 -u localhost 2∞¥ 389

 

這(zhè)樣客戶端和(hé)服務器(qì)端都(dōu)使用' γβ(yòng)了(le) UDP 協議(y δì),可(kě)通(tōng)過 netstat 命令來(lái)查看(kàπγ∏n):

 

$ netstat | grep 2389udp    >♣     0      0 localhost:42634         l♥​ocalhost:2389          ESTABLISHED

 

英文(wén)原文(wén):8 Practical Li←"nux Netcat NC Command Exampl"→φes

 

原文(wén):https://www.o✔£₹schina.net/translate/nc-coγ↓mmand-examples

 

來(lái)源:開(kāi)源中國(guó)

譯者:王振威