關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux 、 Python 、 網路通訊、網路安全 等學習資料!
前言
大家好,這裏是 浩道Linux ,主要給大家分享 L inux 、 P ython 、 網路通訊、網路安全等 相關的IT知識平台。
今天浩道跟大家分享幾款備受運維工程師或者測試工程師歡迎的測試工具。用好它們,既可以提升效率,又可以贏取測試妹子芳心,畢竟她們看到你可以助她們解決問題時,會自主發出「 哇塞,你太厲害了! 」一起學習看看都有哪些神器~
一、
IPerf
工具
IPerf3 是一款由美國伊利諾斯大學(University of Illinois)開發的開源網路效能測試工具,主要用於測試網路節點間(包括回環)TCP或UDP連線的效能。它可以測量 網路頻寬 和 網路品質 ,提供 網路延遲抖動 、 封包遺失率、最大傳輸單元 等統計資訊。
IPerf是一款基於TCP/IP和UDP/IP的網路效能測試工具,可以用來測量網路頻寬和網路品質,提供網路延遲抖動、封包遺失率、最大傳輸單元等統計資訊。網路管理員可以根據這些資訊了解並判斷網路效能問題,從而定位網路瓶頸,解決網路故障。
IPerf 是一款基於命令列模式的網路效能測試工具,是跨平台的,提供橫跨Windows、Linux、Mac的全平台支持。iperf 全程使用記憶體作為發送/接收緩沖區,不受磁盤效能的影響,對於機器配置要求很低。不過由於是命令列工具, iperf 不支持輸出測試圖形。
Iperf可以測試TCP和UDP頻寬品質,具有多種參數和UDP特性,可以用來測試一些網路裝置如路由器,防火墻,交換機等的效能。
IPerf功能包括:
TCP方面:測試網路頻寬,支持多執行緒,客戶端與伺服端支持多重連線,報告MSS/MTU值的大小,支持TCP視窗值自訂並可透過套接字緩沖。
UDP方面:可以設定指定頻寬的UDP數據流,測試網路抖動值、丟包數,支持多播測試,支持多執行緒,客戶端與伺服端支持多重連線。
(一)IPerf工具安裝部署
IPerf的安裝支持yum方式安裝及源碼安裝兩種方式,安裝方式相對比較簡單,以下基於Centos7下透過yum方式安裝iperf3版本進行演示。
1、yum方式安裝
yum install -y iperf3
安裝完成後透過命令檢視對應版本如下:
[root@haodaolinux01 ~]# iperf3 --version
iperf 3.1.7
Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing
(二)IPerf工具命令用法及常見參數
iperf可以執行在任何IP網路上,包括本地乙太網路、接入因特網、Wi-Fi網路等。Iperf是基於 客戶端-伺服端 模式實作的。在測量網路參數時,Iperf區分聽者(Audience)和說者(Speaker)兩種角色。說者向聽著發送一定量的數據,由聽者統計並記錄頻寬、時延抖動等參數。說者的數據全部發送完成後,聽者透過向說者回送一個封包,將測量數據告知說者。這樣,在聽者和說者兩邊都可以顯示記錄的數據。如果網路過於擁塞或誤碼率較高,當聽者回送的封包無法被說者收到時,說者就無法顯示完整的測量數據,而只能報告本地記錄的部份網路參數,發送的數據量、發送時間、發送頻寬等,像延時抖動等參數在說者一側則無法獲得(因此在報告時,伺服器和客戶端所得到的資訊是不同的)。
iperf的頻寬測試分為 TCP模式 和 UDP模式 ,這兩種模式中又分為 上行鏈路測試 和 下行鏈路測試 。
TCP模式:測量網路頻寬、報告MSS/MTU值的大小和觀測值、支持TCP視窗值透過套接字緩沖、當P執行緒或Win32執行緒可用時,支持多執行緒。客戶端與伺服端支持同時多重連線;
UDP模式:客戶端可以建立指定頻寬的UDP流、測量丟包、測量抖動、支持多播、當P執行緒可用時,支持多執行緒。客戶端與伺服端支持同時多重連線(不支持Windows);
上行鏈路:客戶端發送數據,伺服端接受數據
下行鏈路:伺服端發送數據,客戶端接受數據
在完成iperf安裝後,執行「iperf3 –h」即可顯示iperf的詳細用法。iperf的命令列選項共分為三類,分別是 客戶端與伺服器端公用選項 、 伺服器端專用選項 和 客戶端專用選項 。
以下針對這三類參數羅列常見的參數選項。
1、伺服端常見參數選項
(1)-s,--server: 將iperf以server模式啟動,例如:iperf3 –s,iperf3預設啟動的監聽埠為5201,可以透過「-p」選項修改預設監聽埠
(2)-D: 將iperf作為後台守護行程執行,例如:iperf3 -s -D
2、客戶端常見參數選項
(1)-c,--client host: 將iperf以客戶端模式啟動,host是server端地址,eg:iperf3 -c 192.168.20.232
(2)-u,--udp: 表示采用UDP協定發送報文,不帶該參數列示采用TCP協定。
(3)-b,--bandwidth [K|M|G]: 指定UDP模式使用的頻寬,單位bits/sec,預設值是1 Mbit/sec。
(4)-t,--time: 指定數據傳輸的總時間,即在指定的時間內,重復發送指定長度的封包。預設10秒。
(5)-l,--len: 設定讀寫緩沖區的長度,單位為 Byte。TCP預設為8KB,UDP預設為1470字節。通常測試 PPS 的時候該值為16,測試BPS時該值為1400。
(6)-n,--num [K|M|G]: 指定傳輸封包的字節數,例如:iperf3 -c 192.168.20.232 –n 100M
(7)-P,--parallel: 指定客戶端與伺服端之間使用的執行緒數。預設是1個執行緒。需要客戶端與伺服器端同時使用此參數。
(8)-w,--window: 指定套接字緩沖區大小,在TCP方式下,此設定為TCP視窗的大小。在UDP方式下,此設定為接受UDP封包的緩沖區大小,用來限制可以接收封包的最大值
(9)-B,--bind: 用來繫結一個主機地址或介面,這個參數僅用於具有多個網路介面的主機。在UDP模式下,此參數用於繫結和加入一個多播組。
(10)-M,--mss: 設定TCP最大資訊段的值
(11)-N,--nodelay: 設定TCP無延時
(12)-V: 繫結一個 IPv6地址 。
(13)-d,--dualtest: 執行雙測試模式。將使伺服器端反向連線到客戶端,使用-L參數中指定的埠(或預設使用客戶端連線到伺服器端的埠)。使用參數-r以執行互動模式。
(14)-L,--listenport: 指定伺服端反向連線到客戶端時使用的埠。預設使用客戶端連線至伺服端的埠。
(15)-r,--tradeoff: 往復測試模式。當客戶端到伺服器端的測試結束時,伺服器端反向連線至客戶端。當客戶端連線終止時,反向連線隨即開始。如果需要同時進行雙向測試,請嘗試-d參數。
3、客戶端與伺服端通用參數
(1)-f,--farmat [k|m|g|K|M|G]: 指定頻寬輸出單位,「[k|m|g|K|M|G]」分別表示以Kbits, Mbits, Gbits, KBytes, MBytes,GBytes顯示輸出結果,預設Mbits,eg:iperf3 -c 192.168.20.232 -f M
(2)-p,--port: 指定伺服器端監聽的埠或客戶端所連線的埠,預設是5201埠。
(3)-i,--interval: 指定每次報告之間的時間間隔,單位為秒,eg:iperf3 -c 192.168.20.232 -i 5
(4)-F: 指定檔作為數據流進行頻寬測試。例如:iperf3 -c 192.168.20.232 -F haodaolinux.tar.gz
4、其它常見參數
(1)-h,--help: 顯示命令列參考並結束。
(2)-v,--version: 顯示版本資訊和編譯資訊並結束。
(三)IPerf常見測試場景
環境準備如下:
(1)客戶端IP地址:192.168.20.231
(2)伺服端端IP地址:192.168.20.232
1、測試TCP吞吐量
(1)透過使用簡單命令參數測試。
((1))伺服端上執行「iperf3 -s」,即可開啟iperf的伺服器模式。
iperf3 -s
在預設情況下,iperf3將在伺服端開啟一個5201監聽埠,此時就可以將另一台伺服器作為客戶端執行iperf功能測試了。
(( 2 ))客戶端執行測試命令進行測試
iperf3-c 192.168.20.232
((
3
))伺服端的監聽結果如下圖所示:
((
4
))客戶端的監聽結果如下圖所示:
透過以上監聽結果可以看出,iperf預設的執行時間是10秒鐘,每隔一秒鐘輸出一次傳輸狀態,在輸出的最後,iperf還給出了總的數據發送、接收量,並給出了頻寬速率平均值 2.58Gbits/sec左右 。
2、透過增加命令相關參數進行測試
((1))伺服端端開啟iperf的伺服器模式,指定 TCP埠 為5222
iperf3 -s -i 2 -p 5222
((2))客戶端啟動iperf的客戶端模式,連線伺服端
iperf3-c 192.168.20.232-i 2 -t 20 -p 5222
((3))伺服端的監聽結果如下圖所示:
((4))客戶端的監聽結果如下所示:
從監聽結果看出,輸出狀態的間隔變為每2秒鐘一次,總共執行測試時間為20秒,測試的頻寬速率約為2.63Gbits/sec左右;
Interval表示時間間隔。
Transfer表示時間間隔裏面轉輸的數據量。
Bandwidth 是時間間隔裏的傳輸速率。
Retr表示重傳的封包數量。
Cwnd表示擁塞視窗的大小。
2、UDP的丟包和延遲測試
(1)在伺服端上開啟相關命令
iperf3 -s -i 2
(2)
客戶端啟動iperf的客戶端模式,透過-b參數來指定使用100Mb頻寬測試
iperf3-c 192.168.20.232-u-b 100M-i 2
(3)伺服端的監聽結果如下圖所示:
(4)
客戶端的監聽結果如下圖所示:
從監聽結果看出UDP的網路效能如下:
Interval:傳輸總共用時10s
Transfer: 總共傳輸的數據量118MB
Bandwidth: 平均頻寬99.3Mbits/sec
Jitter:抖動0.033ms
Lost/Total Datagrams:丟包的個數5566/總共傳輸包85707個 丟包率6.5%
二、dd命令
Linux的dd命令是一個強大的磁盤操作工具,用於在Linux和其他UNIX-like作業系統中進行低階別的數據轉換和拷貝操作。 它可以用於復制檔、轉換檔格式、建立磁盤映像以及進行磁盤備份和恢復等操作。
dd命令有其如下幾個特點:
1、強大的數據轉換和拷貝功能: dd命令可以用來復制和轉換檔、裝置等,並且在拷貝過程中可以進行格式轉換。它能夠讀取和寫入指定的數據塊,支持多種不同的數據塊大小和轉換方式,可以實作復雜的數據處理任務。
2、靈活的參數和選項: dd命令具有許多參數和選項,可以根據需要進行靈活的配置。例如,可以使用「if=」選項指定輸入檔,使用「of=」選項指定輸出檔,還可以設定塊大小、轉換方式等。這些選項提供了很大的靈活性,使得dd命令可以滿足各種不同的需求。
3、 底層數據處理: dd命令在底層進行數據處理,可以與作業系統底層進行互動。這使得它可以用於一些需要直接操作底層數據的任務,例如建立磁盤映像、轉換檔格式等。
4、需要謹慎使用: 雖然dd命令非常強大,但使用不當可能導致數據遺失或損壞。因此,在使用dd命令之前,需要仔細了解其參數和選項的含義,並確保命令的正確性。此外,還需要謹慎處理數據,確保不會意外地覆蓋或刪除重要數據。
(一)dd命令語法
dd命令的基本語法如下所示:
dd [option]...
其中 option 是dd命令的可選參數,用於指定dd命令的功能和操作。
如 以下是一個使用dd命令的範例,將一個名為input.txt的檔拷貝到另一個名為output.txt的檔中,並且每次讀入和寫出的字節數為1024字節 :
dd if=input.txt of=output.txt ibs=1024 obs=1024
以下是dd命令的常用參數和選項:
1、if=檔名: 指定輸入檔名,預設為標準輸入。
2、of=檔名: 指定輸出檔名,預設為標準輸出。
3、ibs=bytes: 一次讀入bytes個字節,即指定一個塊大小為bytes個字節。
4、cbs=bytes: 一次轉換bytes個字節,即指定轉換緩沖區大小。
5、skip=blocks: 從輸入檔開頭跳過blocks個塊後再開始復制。
6、obs=bytes: 一次寫入bytes字節,即寫入緩沖區的字節數。
7、bs=bytes: 同時設定讀/寫緩沖區的字節數(等於設定ibs和obs)。
8、cbs=byte: 一次轉換bytes字節。
9、count=blocks: 只拷貝輸入的blocks塊,塊大小等於ibs指定的字節數。
10、seek=blocks: 從輸出檔開頭跳過blocks個塊後再開始復制。
11、status=progress: 顯示進度資訊,例如每秒鐘復制的字節數和進度百分比等。
12、conv=<關鍵字>: 關鍵字可以有以下11種:
conversion:用指定的參數轉換檔。
ascii:轉換ebcdic為ascii
ebcdic:轉換ascii為ebcdic
ibm:轉換ascii為alternate ebcdic
block:把每一行轉換為長度為cbs,不足部份用空格填充
unblock:使每一行的長度都為cbs,不足部份用空格填充
lcase:把大寫字元轉換為小寫字元
ucase:把小寫字元轉換為大寫字元
swap:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出檔
sync:將每個輸入塊填充到ibs個字節,不足部份用空(NUL)字元補齊。
(二)dd命令例項演示
例項1:透過dd命令完成檔復制
dd if=haodao_in.txt of=haodao_out.txt ibs=1024 obs=1024
以上命令表示將一個名為haodao_in.txt的檔拷貝到另一個名為haodao_out.txt的檔中,並且每次讀入和寫出的字節數為1024字節。
例項2:透過dd命令建立一個空檔
dd if=/dev/zero of=test.out bs=1M count=1000
以上命令表示建立一個名為test.out的空檔,大小為1000MB,其中每個塊的大小為1MB。
例項3:結合time命令, 透過dd命令測試對磁盤的讀寫操作。
[root@k8s-master ~]# time dd if=/dev/zero of=test.out bs=1M count=1000 oflag=direct
記錄了1000+0 的讀入
記錄了1000+0 的寫出
1048576000字節(1.0 GB)已復制,10.9335 秒,95.9 MB/秒
real 0m11.022s
user 0m0.040s
sys 0m1.828s
如上得出: 對磁盤讀操作的速度可以達到 9 5.9MB/s 。並且生成test.out檔。
例項4:透過dd命令實作將file1中的小寫字母轉換成大寫字母,並且轉成file2檔保存。
dd if=file1 of=file2 conv=ucase
例項5:透過dd命令將一個磁盤的內容復制到另一個磁盤中。
dd if=/dev/sda of=/dev/sdb bs=4096
以上命令表示將 /dev/sda 磁盤的內容復制到 /dev/sdb 磁盤中,並且塊大小為4096字節。
例項6:透過dd命令將一個磁盤的內容復制到一個檔中。
dd if=/dev/sda of=haodao.out bs=4096 count=1000 status=progress
以上命令表示將 /dev/sda 磁盤的前1000個塊內容復制到 haodao.out 檔中,每個塊大小為4096字節,並且顯示進度條資訊。
例項7:透過dd備份整個硬碟:使用dd命令可以將整個硬碟備份到另一個硬碟中。
dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
以上命令表示將/dev/sda磁盤的內容復制到/dev/sdb磁盤中,每個塊大小為4096字節。 conv=noerror,sync則表示在復制過程中忽略讀取中的錯誤,並將輸出同步到對應磁盤中。
例項8:透過dd命令可以將檔從一種格式轉換為另一種格式。
dd if=input.txt of=output.bin bs=1 count=1
例項9:透過dd命令可以建立磁盤的映像檔。
dd if=/dev/cdrom of=image.iso
以上命令表示要建立一個名為image.iso的CDROM映像檔。
例項10、透過dd命令可以測試磁盤的讀寫速度。
dd if=/dev/sda of=/dev/null bs=1M count=1000
三、stress-ng工具
stress-ng 是一款用於對系統進行壓力測試的工具。它有著非常強大的功能,可以對系統的多種資源指標進行測試,包括但不限於 CPU、磁盤、網路、記憶體、行程、檔案系統 等。
使用者可以根據自己的需求選擇相應的負載模式,並設定負載級別、持續時間等參數來控制測試的強度和時長。當stress-ng測試CPU時,會不斷呼叫行程,計算隨機數的平方根;當測試記憶體時,會不斷呼叫記憶體呼叫malloc和記憶體釋放free函式;當測試磁盤I/O時,會不斷呼叫sync()中斷,以測試磁盤I/O。
CentOS 7 的EPEL源包含2個壓力測試工具,一個是標準的stress,另一個是其升級版stress-ng。
stress-ng是stress的升級版,用於Linux壓力測試,帶源碼。stress-ng相容stress, 支持產生各種復雜的壓力。
(一)stress-ng工具安裝部署
stress-ng的安裝支持yum方式安裝及源碼安裝兩種方式,不過yum方式安裝不是最新版本,推薦用源碼方式安裝最新版本。
1、yum方式安裝
yum install -y epel-release.noarch && yum -y update
yum install -y stress stress-ng
2、源碼安裝
1)首先下載相應源碼,可以從以下站點下載最新stress-ng源碼包。
https://fossies.org/linux/privat/
以下我是透過wget命令在Linux環境下直接下載,當然可以下載到本地後再上傳Linux系統。
wget https://fossies.org/linux/privat/stress-ng-0.16.03.tar.gz
下載好後本地源碼壓縮包如下所示:
2)源碼包編譯安裝
解壓、編譯與安裝三部曲
tar-xzfstress-ng-0.16.03.tar.gz
cdstress-ng-0.16.03
make && make install
待編譯完整完成,看到如下標識說明安裝成功。
3)安裝完成檢視驗證版本資訊
[root@node1 stress-ng-0.16.03]# stress-ng-V
stress-ng, version 0.16.03 (gcc 4.8.5, x86_64Linux 3.10.0-957.el7.x86_64) ?¥
(二)stress-ng命令用法及常見參數
1、stress-ng命令用法
stress-ng [OPTION [ARG]]
2、stress-ng命令常見選項參數
-h,--help:顯示幫助資訊;
--version:顯示版本資訊;
-t,–timeout:指定程式執行結束的時間,後面直接跟數位,單位為秒;
-c,–-cpu:後面空格跟一個整數,表示測試CPU的行程數,--cpu 4 :表示生成4個worker迴圈呼叫sqrt()產生cpu壓力;
-i,--io:後面空格跟一個整數,表示測試磁盤I/O的行程數, --io 4 :表示生成4個worker迴圈呼叫sync()產生io壓力;
-m,--vm:後面空格跟一個整數,表示測試記憶體的行程數,--vm 4 :表示生成4個worker迴圈呼叫malloc()/free()產生記憶體壓力;
-d,--hdd:後面空格直接跟數位,表示產生執行write和unlink函式的行程數,用於磁盤負載測試;
--cpu-method:指定CPU的測試方法,後面空格直接跟方法名;
--metrics:輸出命令執行指標;
--vm-bytes:指定在記憶體測試時malloc的字節數,預設256M;
-- class :指定測試類別,後面空格跟類別名;
--matrix :啟用矩陣測試模式,後面空格跟矩陣模式名;
--random-seed:指定測試隨機種子,後面空格跟種子名;
--sequential:啟用順序測試模式;
--hdd-bytes:指定寫的字節數;
--cpu-load:CPU負載占比,後面空格直接跟數位,單位為百分比。
(三)stress-ng壓力測試實用場景
1、CPU負載測試
如下命令使用4個CPU行程數,進行矩陣乘法計算進行壓力測試,持續時間為600秒。
stress-ng --cpu 4 --cpu-method matrixprod --timeout 600s
此時先透過top命令檢視測試前系統負載情況,如下圖所示:
執行壓力測試過程中,再透過top命令檢視系統負載情況,如下圖所示:
2、記憶體負載測試
如下命令使用4個記憶體分配行程, 每次分配大小512M,分配後不釋放,保持測試600秒。
stress-ng --vm 4 --vm-bytes 512M --timeout 600s
此時先透過free和top命令檢視測試前系統記憶體使用情況,如下圖所示:
執行壓力測試過程中,再透過free和top命令檢視系統記憶體使用情況,如下圖所示:
如果不帶保持時間參數,長期保持測試命令如下:
stress-ng --vm 4 --vm-bytes 512M --vm-keep
3、
I
O負載測試
如下命令使用4個IO行程 ,保持測試600秒。
stress-ng --io 4 --timeout 600s
此時先透過top命令及prometheus監控系統檢視測試前系統負載情況,如下圖所示:
執行壓力測試過程中,再透過top命令及 prometheus監控系統 檢視 系統負載 情況,如下圖所示:
4、磁盤及IO測試
如下命令使用4個I/O行程, 1個寫行程,每次寫1000M檔塊,測試600秒。
stress-ng --io 4 --hdd 1 --hdd-bytes 1000M --timeout 600s
此時先透過top命令及prometheus監控系統檢視測試前系統負載情況,如下圖所示:
執行壓力測試過程中,再透過top命令及 prometheus監控系統 檢視 系統負載 情況,如下圖所示:
5、CPU及磁盤測試
如下命令使用4個CPU行程,2個I/O行程,測試600秒 。
stress-ng --cpu 4 -i 2 --timeout 600s
此時先透過top命令檢視測試前系統CPU負載情況,如下圖所示:
執行壓力測試過程中,再透過top命令檢視 系統負載 情況,如下圖所示:
6、調整CPU負載占用百分比進行測試
實際測試環境中可能不是要求CPU、記憶體等負載為100%情況下進行,此時可以透過調整相關負載參數進行測試。
如下命令使用4個CPU行程,調整CPU負載占比為60%進行測試,測試時長600秒。
stress-ng --cpu 4 --cpu-load 60 --timeout 600s
執行壓力測試過程中,再透過top命令檢視 系統負載 情況,如下圖所示:
四、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 --version
Ncat: 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左右;
五、總結
本次就先給大家分享帶來這4款工具,用好它們,你會發現可以解決運維工作或者測試工作中好多問題,並且這些工具功能相對於強大,不是單一的功能。所以說掌握好這些,你會贏得測試妹子芳心!相信我!!!
更多精彩
關註公眾號 「 浩道Linux 」
浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 、 網路安全 、 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。
喜歡的話,記得 點「贊」 和 「在看」 哦