当前位置: 欣欣网 > 码农

掌握好这些测试工具,总有一款赢得测试妹子芳心~

2024-06-24码农

关注上方 浩道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 --versioniperf 3.1.7Linux haodaolinux01 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64Optional 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.022suser 0m0.040ssys 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 updateyum 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-Vstress-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 --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左右;

五、总结

本次就先给大家分享带来这4款工具,用好它们,你会发现可以解决运维工作或者测试工作中好多问题,并且这些工具功能相对于强大,不是单一的功能。所以说掌握好这些,你会赢得测试妹子芳心!相信我!!!

更多精彩

关注公众号 浩道Linux

浩道Linux ,专注于 Linux系统 的相关知识、 网络通信 网络安全 Python相关 知识以及涵盖IT行业相关技能的学习, 理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~ 关注回复「资料」可 免费获取学习资料 (含有电子书籍、视频等)。

喜欢的话,记得 点「赞」 「在看」