當前位置: 妍妍網 > 碼農

分享一個可以在測試妹子面前炫技的Linux命令~

2024-03-26碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

今天浩道跟大家分享一個非常實用且強大的Linux命令,即nc,它被廣泛用於網路相關的排查工作,本文將透過大量例子進行詳細的分析其命令用法。大家感興趣可以收藏,以防需要用到時無從下手!同時告訴你,這個命令也很受測試妹子歡迎,她們也是常用的,所以掌握好這個命令,你可以在他們面前炫耀一把技術水平!

一、nc命令介紹

nc是netcat的簡寫,是一個功能強大的網路工具,其功能是用於掃描與連線指定埠,有著網路界的瑞士軍刀美稱。它能夠基於命令列在網路上讀取和寫入數據,連線與掃描指定埠號,支持TCP和UDP協定,為廣大工程師提供無限潛在功能。不管是運維工程師還是網路工程師,熟悉使用這個命令都可以讓很多工作事半功倍,尤其是在排查各類網路故障方面。

netcat即是網路貓的意思,在linux系統中nc命令實際執行命令是ncat。nc命令的主要作用如下:

1、實作任意TCP/UDP埠的偵聽,nc可以作為server以TCP或UDP方式偵聽指定埠;

2、埠的掃描,nc可以作為client發起TCP或UDP連線;

3、伺服器之間進行檔傳輸;

4、伺服器之間進行網路測速;

二、nc命令用法

1、nc命令安裝

centos7系統下 安裝命令如下:

yum install -y nc

安裝成功後,檢視nc版本號如下:

[root@master ~]# nc --versionNcat: Version 7.50 ( https://nmap.org/ncat )

2、nc命令常見語法格式

nc [參數] 網域名稱/IP地址 [埠]

3、nc命令常見參數

-h:線上幫助;-v:顯示命令執行過程;-u:指定使用的傳輸協定為UDP,預設為TCP;-z:使用zero輸入/輸出模式,只在掃描通訊埠時使用;-l:使用監聽模式,處於監聽模式時,表示nc作為伺服端,監聽並接受連線,管控傳入的資料;-w:用來設定超時秒數,後面直接跟數位;

4、環境準備

以下 例透過兩台伺服器進行實驗測試:

伺服器1 的IP:192.168.20.231

伺服器2 的IP:192.168.20.232

以上兩台伺服器 防火墻皆為關閉狀態下進行測試;

三、nc命令經典實用案例

1 、測試伺服器主機的TCP或UDP埠是否正常

這種測試場景在運維工作中很常見,當各個服務部署完後,發現無法正常存取服務,此時就要先確保網路是否正常了,除了鏈路需要測試,伺服端口也要測試,因為有時候防火墻策略沒有做好,導致伺服端口不通。TCP埠測試方法比較多,UDP測試方法就比較少了,以下針對TCP埠和UDP埠測試都是基於nc命令測試的。

(1)測試 伺服器1 伺服器2 之間的某個TCP埠是否正常,透過nc啟動TCP監聽埠方式;

1)利用nc作為server端啟動一個TCP監聽埠,如在 伺服器2 上啟動監聽埠為 8888 。命令如下:

nc -l 8888

此時 伺服器2 處於TCP監聽模式下,如下圖所示:

2)此時在 伺服器1 上透過nc作為客戶端進行測試,看看其埠是否正常,命令如下:

nc-vz 192.168.20.232 8888

出現如下圖結果,若出現類似 1 bytes sent, 0 bytes received in xxx seconds 等訊息,則是TCP埠通的;若埠為通的,則命令返回碼為0。

其它如下圖結果,若出現 Connection refused .則說明TCP埠不通,如果埠不通,此時命令返回碼為1。

(2)測試 伺服器1 伺服器2 之間的 某個UDP埠 是否正常, 透過nc啟動UDP監聽埠方式;

1)利用nc作為server端啟動一個UDP監聽埠,如在 伺服器2 上啟動監聽埠為 9999 (註意此埠為伺服器2非占用的埠)。命令如下:

nc -lu 9999

此時伺服器2處於UDP監聽模式下,如下圖所示:

2)此時在 伺服器1 上透過nc作為客戶端進行測試,看看其網路環通度,命令如下:

nc-vuz 192.168.20.232 9999

出現如下圖結果, 若出現類似 1 bytes sent, 0 bytes received in xxx seconds 等訊息,則是UDP 埠通的; 口為通的, 則命令返回碼為0。

其它如下圖 結果 若出現 Connection refused .則說 明UDP 埠不通,如果埠不通,此時命令返回碼為1

2、透過nc命令在兩台伺服器之間進行檔或目錄傳輸

(1)將 伺服器1 上的 haodao_send.txt 檔傳輸到 伺服器2 上,並且命名為 haodao_rece.txt

1) 伺服器1 上的 haodao_send.txt 檔內容如下圖:

2) 伺服器2 上啟動接收監聽埠服務;

nc-l 9898 > haodao_rece.txt

意思是把9898埠上接收到的數據都寫在haodao_rece.txt檔中。(這裏的檔名可以自己定義)

3) 伺服器1 上往 伺服器2 的9898埠發送數據,把haodao_send.txt檔發送過去;

nc 192.168.20.232 9898 < haodao_send.txt

4)待 伺服器2 接收完畢後,會自動斷開監聽連線,此時可以檢視接收到的檔與發送端一樣,如下圖所示:

(2)將 伺服器1 上的 haodao_test 目錄(目錄中包含多個檔)傳輸到 伺服器2 上,完成拷貝;

1) 伺服器1 /root/haodao_test 目錄結構如下圖所示:

2) 伺服器2 上啟動接收監聽埠服務;

nc -l 9898 | tar -xzvf -

3) 伺服器1 上往 伺服器2 的9898埠打包發送數據,把haodao_test目錄及目錄下檔打包發送過去;

tar czvf - haodao_test |nc 192.168.20.2329898

4)待 伺服器2 接收完畢後,會自動斷開監聽連線,此時可以檢視接收到的檔與發送端一樣,如下圖所示:

3 透過nc命令測試兩台伺服器之間的網速

這個測速原理就是利用檔傳輸原理來進行,即把 伺服器1 /dev/zero 發送給 伺服器2 /dev/null ,這就相當於把伺服器1的無限個0,傳輸給到伺服器2上的空裝置。然後透過dstat命令來監測網速。

1)兩台伺服器上安裝dstat命令,用於 監測網速;

yum install -y dstat

2) 伺服器2 上啟動接收監聽埠服務,監聽9696埠,把來自這個埠的數據都輸出到/dev/null;

nc -l 9696 > /dev/null

3) 伺服器1 上往 伺服器2 的9696埠發送數據,把無限個0發送給伺服器2的9696埠;

nc192.168.20.2329696 < /dev/zero

4) 伺服器1 上重開一個ssh視窗, 執行 dstat 命令 檢視網速,看到結果如下圖所示:

可以看到,伺服器1上接收數據為140K左右,發送110M左右;

5) 伺服器2 重開 一個ssh視窗, 執行 dstat 命令 檢視網速 ,看到結果如下圖所示:

可以看到,伺服器2上接收數據為105M左右,發送140K左右;

四、總結

nc命令功能比較多,大家感興趣也可以去挖掘它那些功能看看,本文羅列一些大家平時在運維或者測試工作中常用的功能。簡單實用型有助於我們愛上一款測試工具。

更多精彩

關註公眾號 浩道Linux

浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

喜歡的話,記得 點「贊」 「在看」