0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一个非常实用且强大的Linux nc命令

jf_TEuU2tls 来源:浩道Linux 2023-08-16 09:15 次阅读

一、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监听模式下,如下图所示:

242808a4-3bc7-11ee-9e74-dac502259ad0.png


2)此时在服务器1上通过nc作为客户端进行测试,看看其端口是否正常,命令如下:

nc-vz192.168.20.2328888

出现如下图结果,若出现类似1 bytes sent, 0 bytes received in xxx seconds等消息,则是TCP端口通的;若端口为通的,则命令返回码为0。

243acc46-3bc7-11ee-9e74-dac502259ad0.png

其它如下图结果,若出现Connection refused.则说明TCP端口不通,如果端口不通,此时命令返回码为1。

245597c4-3bc7-11ee-9e74-dac502259ad0.png

(2)测试服务器1和服务器2之间的某个UDP端口是否正常,通过nc启动UDP监听端口方式;

1)利用nc作为server端启动一个UDP监听端口,如在服务器2上启动监听端口为9999(注意此端口为服务器2非占用的端口)。命令如下:

nc-lu9999

此时服务器2处于UDP监听模式下,如下图所示:

247870d2-3bc7-11ee-9e74-dac502259ad0.png

2)此时在服务器1上通过nc作为客户端进行测试,看看其网络连通性,命令如下:

nc -vuz 192.168.20.232 9999

出现如下图结果,若出现类似1 bytes sent, 0 bytes received in xxx seconds等消息,则是UDP端口通的;若端口为通的,则命令返回码为0。

24937c9c-3bc7-11ee-9e74-dac502259ad0.png

其它如下图结果,若出现Connection refused.则说明UDP端口不通,如果端口不通,此时命令返回码为1。

24b04962-3bc7-11ee-9e74-dac502259ad0.png

2、通过nc命令在两台服务器之间进行文件或目录传输

(1)将服务器1上的haodao_send.txt文件传输到服务器2上,并且命名为haodao_rece.txt;

1)服务器1上的haodao_send.txt文件内容如下图:

24d0eac8-3bc7-11ee-9e74-dac502259ad0.png

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接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:

24f7def8-3bc7-11ee-9e74-dac502259ad0.png

(2)将服务器1上的haodao_test目录(目录中包含多个文件)传输到服务器2上,完成拷贝;

1)服务器1上/root/haodao_test目录结构如下图所示:

2517da46-3bc7-11ee-9e74-dac502259ad0.png

2)服务器2上启动接收监听端口服务;

nc -l 9898 | tar -xzvf -

3)服务器1上往服务器2的9898端口打包发送数据,把haodao_test目录及目录下文件打包发送过去;

tar czvf - haodao_test |nc 192.168.20.232 9898

4)待服务器2接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:

2537ddbe-3bc7-11ee-9e74-dac502259ad0.png

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端口;

nc 192.168.20.232 9696 < /dev/zero

4)服务器1上重开一个ssh窗口,执行dstat命令查看网速,看到结果如下图所示:

254bdd50-3bc7-11ee-9e74-dac502259ad0.png

可以看到,服务器1上接收数据为140K左右,发送110M左右;

5)服务器2上重开一个ssh窗口,执行dstat命令查看网速,看到结果如下图所示:

256a853e-3bc7-11ee-9e74-dac502259ad0.png

可以看到,服务器2上接收数据为105M左右,发送140K左右;

四、总结

nc命令功能比较多,大家感兴趣也可以去挖掘它那些功能看看,本文罗列一些大家平时在运维或者测试工作中常用的功能。简单实用型有助于我们爱上一款测试工具。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    593

    浏览量

    27387
  • UDP协议
    +关注

    关注

    0

    文章

    69

    浏览量

    12691
  • SSH
    SSH
    +关注

    关注

    0

    文章

    187

    浏览量

    16330
  • LINUX内核
    +关注

    关注

    1

    文章

    316

    浏览量

    21643
  • TCP通信
    +关注

    关注

    0

    文章

    146

    浏览量

    4221

原文标题:Linux下的nc命令太强大了!

文章出处:【微信号:浩道linux,微信公众号:浩道linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    非常高效三linux shell命令分享

    了开发效率。本文浅析三非常高效的linux shell命令(awk,grep,sed),在开发工程中的实际应用。1,从系统命令的打印中获取
    发表于 12-23 06:38

    你不可不知的11Linux命令

    Linux命令行吸引了大多数Linux爱好者。正常的Linux用户
    发表于 11-09 12:14 1360次阅读
    你不可不知的11<b class='flag-5'>个</b><b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    9超有趣的Linux命令使用动画演示详细介绍

    Linux强大特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的
    的头像 发表于 06-10 09:19 5192次阅读

    linux的ip命令旨在取代ifconfig

    linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需
    的头像 发表于 02-02 16:07 3098次阅读
    <b class='flag-5'>linux</b>的ip<b class='flag-5'>命令</b>旨在取代ifconfig

    linux有哪些常用的命令

     Linux命令非常之多,分为内部命令和外部命令
    发表于 02-27 08:00 4次下载
    <b class='flag-5'>linux</b>有哪些常用的<b class='flag-5'>命令</b>

    Linux在在文件中查找文本的Grep命令

    grep命令是(global regular expression print,全局正则表达式输出)的缩写,它是Linux中功能最强大最常用的命令
    的头像 发表于 06-21 12:06 3308次阅读

    Linux的常用命令大全详细说明

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要
    发表于 09-24 08:00 5次下载
    <b class='flag-5'>Linux</b>的常用<b class='flag-5'>命令</b>大全详细说明

    6有趣的Linux命令案例讲解

    6有趣的Linux命令案例讲解
    发表于 08-11 17:49 14次下载

    如何使用grep命令

    grep命令的全称是全局正则表达式打印,它是Linux中功能最强大最常用的命令
    的头像 发表于 12-06 16:43 2098次阅读

    Linux history命令的使用技巧

    使用 Linux 命令行工作,需要了解使用 history 的些常用的特性,不管是 Linux 初学者,还是系统专家。
    的头像 发表于 02-03 16:30 2784次阅读
    <b class='flag-5'>Linux</b> history<b class='flag-5'>命令</b>的使用技巧

    Linux次运行多个命令的方法介绍

    Linux 终端是功能强大的工具,允许您使用命令执行各种系统操作。文件操作、程序管理和服务自动化是您可以使用 shell
    发表于 03-20 09:39 7918次阅读

    如何在Linux中使用progress命令

    progress 命令简单但功能强大Linux/Unix 命令行工具,可让用户查看文件
    的头像 发表于 04-08 15:51 2449次阅读

    如何在Linux中高效运行终端命令

    Linux 终端是功能强大的工具,允许您使用命令执行各种系统操作。文件操作、程序管理和服务自动化是您可以使用 shell
    的头像 发表于 04-13 10:34 671次阅读

    初学者必学的20Linux基础命令

    在处理 Linux 时,您需要使用 shell——可以让您访问操作系统的接口。命令需要作
    的头像 发表于 04-20 10:21 1446次阅读

    shell命令linux命令样吗

    结合在起,形成相当于面向过程的程序,即shell script,从而实现些复杂的功能。 而Linux
    的头像 发表于 11-08 10:51 2840次阅读