运维工程师必备技能:nc命令详解

news2024/12/27 15:43:49

🍁博主简介
🏅云计算领域优质创作者
🏅2022年CSDN新星计划python赛道第一名

​ 🏅2022年CSDN原力计划优质作者
​ 🏅阿里云ACE认证高级工程师
​ 🏅阿里云开发者社区专家博主

💊交流社区:CSDN云计算交流社区欢迎您的加入!

nc是一个简单、可靠的网络工具,被广泛应用于实现TCP/UDP端口的侦听、端口扫描、机器之间传输文件等多种网络任务。

nc全称netcat,又叫做瑞士军刀,是一款简单、可靠的网络工具

1、nc命令的作用

  1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  2. 端口扫描,nc可以作为client发起TCP或UDP连接
  3. 机器之间传输文件
  4. 机器之间网络测速

2、安装nc命令

CentOS/RHEL/Fedora:

yum install -y nc
nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

或者

dnf install nc

Debian/Ubuntu:

apt-get install netcat

3、基本用法

nc命令的基本语法格式如下:

nc [options] hostname port

[options]代表命令的选项

hostname是目标主机的域名或IP地址

port是目标端口号。

4、常用参数选项

  • -h:帮助
  • -4:仅使用 IPv4
  • -6:仅使用 IPv6
  • -v:显示详细信息,包括连接和数据传输的详细信息。
  • -z:指定在连接成功后关闭连接,而不是等待输入。
  • -n:指定不使用DNS解析主机名。
  • -w:指定连接超时时间(以秒为单位)。
  • -l:指定 nc 作为服务器监听连接。
  • -p:指定本地端口号。
  • -s:指定本地源地址。
  • -k:指定服务器在接受一个连接后保持监听状态,以便接受多个连接。
  • -u:指定使用UDP协议。
  • -e, --exec:执行给定的命令。
  • -c, --sh-exec:通过 /bin/sh 执行给定的命令。可使用管道符之类的符号
  • -z:指定在连接成功后关闭连接,而不是等待输入。
  • -b:指定在连接成功后将标准输入和标准输出重定向到后台。
  • -t:允许nc与telnet兼容,例如处理特殊转义序列。
  • -r:指定在连接成功后随机选择本地端口号。
  • –version:显示 Ncat 的版本信息并退出

5、常见用法示例

  1. 测试远程主机指定TCP/UDP端口是否开放

    • TCP端口测试:
    nc -zv 8.8.8.8 53
    
    • UDP端口测试:`
    nc -uzv 8.8.8.8 53
    
  2. 打开一个TCP连接

    • 连接到远程主机的指定端口:
    nc example.com 80
    
    • 本地监听指定端口:
    nc -l -p 8080
    
  3. 文件传输

    • 从本地主机向远程主机发送文件:
    nc host port < file
    
    • 从远程主机向本地主机接收文件:
    nc -l -p port > file
    
  4. 端口扫描

    • 扫描指定范围的端口:
    nc -zv 192.168.1.1 20-1024
    
  5. 端口转发

    • 将本地端口的请求转发到远程端口:
    nc -l -p local_port -c 'nc remote_host remote_port'
    

6、注意事项

  • nc命令在不同的Linux发行版中可能有所不同,某些版本可能已经被ncat(netcat的增强版,来自nmap项目)所取代。
  • 在使用nc命令时,建议查看其帮助文档(nc -h)以了解所有可用的选项和用法。
  • 对于需要更高级功能的场景,如SSL/TLS加密、通过HTTP代理进行转发等,可以考虑使用ncat命令。

nc命令是一个功能强大的网络工具,通过合理使用其选项和参数,可以完成多种网络任务。

7、实战演练

7.1 网络连通性测试和端口扫描

测试主机的TCP端口

服务器1监听在tcp的60000端口

$ nc -lp 60000
# 或者省略-p
$ nc -l 60000

查看端口

$ netstat -ntlpu | grep 60000
tcp        0      0 0.0.0.0:60000           0.0.0.0:*               LISTEN      2553/nc             
tcp6       0      0 :::60000                :::*                    LISTEN      2553/nc

服务器2上测试

$ nc -zv 10.0.0.11 60000
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.11:60000.
Ncat: 0 bytes sent, 0 bytes received in 0.00 seconds.

测试主机的UDP端口

服务器1监听在udp的60000端口

$ nc -lup 60000
# 或者省略-p
$ nc -lu 60000

查看端口

$ netstat -ntlpu | grep 60000
udp        0      0 0.0.0.0:60000           0.0.0.0:*                           2633/nc             
udp6       0      0 :::60000                :::*                                2633/nc

服务器2上测试

$ nc -vzu 10.0.0.11 60000
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.11:60000.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.00 seconds.

补充

加上 -w 可以设置超时时长

nc -vzw 2 10.0.0.11 60000

设置超时时长2s

脚本中使用

端口正常的话,查询 $?,就是0

$ nc -z 10.0.0.11 22
$ echo $?
0

如果不正常,就不为0

$ nc -z 10.0.0.11 221
$ echo $?
1

当为ip的时候,加上-n选项会更高效

  • 提高效率,避免的不必要的dns查询
  • 脚本自动化,避免因为dns问题导致整个任务失败
  • 安全稳定,避免dns欺骗或者缓存的问题
nc -vzn 10.0.0.11 60000
7.2 文件和目录的传输

传输文件

服务器2上待传输的文件

cat test.txt
第一行
第二行
第三行
第四行

服务器1上监听60000端口,并将传入的内容写入文件

nc -l 60000 > test.txt

服务器2上发送文件内容到服务器1的60000端口上

nc 10.0.0.11 60000 < test.txt

查看服务器1上的文件

cat test.txt 
第一行
第二行
第三行
第四行
7.3 传输文件夹

利用tar来传输

经过我的测试管道后面最后必须是 - ,不能是其余自定义的文件名

启动服务器1上的接收服务

nc -l 60000 | tar xfvz -

启动服务器2上的发送命令

tar czf - ./nginx/* | nc 10.0.0.11 60000

./nginx/* 是指的相对路径,如果是 *则表示当前文件夹的所有文件和文件夹

具体过程就是

把当前目录的所有文件打包为 - ,然后使用nc发送给服务器2

然后这边收到了之后再解包
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2040986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java超市收银系统(七、商品修改和删除)

引言 当选择1时&#xff0c;显示 “输入商品编码&#xff1a;”&#xff0c;输入商品表中条码&#xff0c;若条码存在则删除商品表中的数据信息&#xff1b;若条码不存在&#xff0c;则显示 “你输入的编码不存在&#xff0c;请重新输入”。当选择2时&#xff0c;显示 “输入商…

【等保测评】Mysql测评中使用的命令汇总

一、身份鉴别 a) 应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换&#xff1b; mysql -uroot -p 查看登录是否需要输入口令鉴别用户身份 select user,host from mysql.user 查看是否存在相同账户…

OpenCV图像滤波(17)计算图像梯度函数Sobel()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Sobel()函数用于计算图像的一阶、二阶、三阶或混合导数。它使用扩展的Sobel算子来执行这一任务。 在所有情况下&#xff0c;除了一种情况之外&am…

微信小程序 ==== 半屏打开小程序

目录 打开半屏小程序 调用流程 打开半屏小程序 半屏小程序环境判断 返回原小程序 使用限制 wx.openEmbeddedMiniProgram 功能描述 参数 wx.navigateBackMiniProgram 功能描述 示例代码 Object wx.getEnterOptionsSync() 功能描述 返回值 返回有效 referrerInfo…

数据可视化之旅,从数据洞察到图表呈现,可视化的产品设计

图表作为数据可视化的重要工具&#xff0c;是对原始数据进行深度加工与解读的有效手段&#xff0c;它助力我们洞悉数据背后的真相&#xff0c;使我们能更好地适应这个由数据驱动的世界。无论是工作汇报、项目实施、产品设计、后台界面还是数据大屏展示&#xff0c;图表都扮演着…

Transformer目标检测 | DETR论文解读

0. 前言 DETR是首个将Transformer应用到2D目标检测任务中的算法&#xff0c;由Facebook于2020年在论文《End-to-End Object Detection with Transformers》中提出。与传统目标检测算法不同的是&#xff0c;DETR将目标检测任务视为一个直接的集合预测问题&#xff0c;采用基于集…

Java同城宠物兼职遛狗系统小程序源码

&#x1f43e;【同城新宠】遛狗兼职大揭秘&#xff01;一键解锁“遛狗系统”&#xff0c;狗狗开心你也赚&#xff01;✨ &#x1f43e; 开篇&#xff1a;告别孤单&#xff0c;狗狗也需要社交圈&#xff01;&#x1f46d; Hey小伙伴们&#xff0c;你家的小毛球是不是总在家里闷…

周杰伦又救了腾讯音乐一次

文丨郭梦仪 “一个周杰伦撑起了半个腾讯音乐”&#xff0c;近十年前对腾讯音乐的调侃&#xff0c;如今依然成立。 作为中国乐坛霸主&#xff0c;腾讯音乐&#xff08;简称TME&#xff0c;1698.HK&#xff09;过去打下的音乐版权江山&#xff0c;似乎已成其取之不尽的金矿&…

Github-vscode联合使用保姆及教程

Github-VScode联合使用保姆及教程 update: 2024/8/10 _Karen bluu 文章目录 Github-VScode联合使用保姆及教程1.Git 和 Github分别是什么2.安装2.1 git安装2.2 vscode安装 3. 使用Github3.1 拉取项目3.1.1 拉取方法3.1.2 注意事项 3.2 寻找合适的项目3.3 创建自己的github仓库3…

【Python学习-UI界面】PyQt5 小部件12-QStackedWidget 多页显示

功能和 QTabWidget 类似&#xff0c;它也有助于高效利用窗口的客户区域。 QStackedWidget 提供了一个窗口堆栈&#xff0c;每次只能查看一个窗口。它是建立在 QStackedLayout 之上的一个有用的布局。 样式如下: 右键可以变型为QTabWidget

养生生活视频素材去哪里找?养生系列视频素材网站分享

如何寻找高质量的养生视频素材。无论您是刚入行的新手&#xff0c;还是拥有众多粉丝的资深创作者&#xff0c;优质的养生视频素材都是吸引观众的关键。接下来&#xff0c;我将介绍一些顶级平台&#xff0c;帮助您轻松获取各类养生视频素材。 蛙学网 首先推荐的平台是蛙学网。这…

redisssion分布式锁

分布式锁的问题 基于setnx的分布式锁实现起来并不复杂&#xff0c;不过却存在一些问题。 锁误删问题 第一个问题就是锁误删问题&#xff0c;目前释放锁的操作是基于DEL&#xff0c;但是在极端情况下会出现问题。 例如&#xff0c;有线程1获取锁成功&#xff0c;并且执行完任…

Vue2 和 Vue3中EventBus使用差异

目录 前言一、EventBus 和 mitt 的对比二、Vue 2 中的 EventBus 使用实例2.1 创建 EventBus2.2 在组件中使用 EventBus2.2.1 组件 A - 发送事件2.2.2 组件 B - 监听事件 2.3 注意事项 三、Vue 3 中的 mitt 使用实例3.1 安装 mitt3.2 创建 mitt 实例3.3 在组件中使用 mitt3.3.1 …

【笔记】MSPM0G3507开发环境搭建——MSPM0G3507与RT_Thread(一)

环境搭建大体过程就不再赘述了&#xff0c;本文记录一下我刚开始搭建环境时踩过的坑以及一些不太懂的地方。后边会出MSPM0G3507RT-Thread 3.1.5相关的教程&#xff0c;感兴趣记得点点关注。 本篇使用立创地猛星MSPM0G3507开发板 参考文章&#xff1a; 【学习笔记一】搭建MSPM…

几种Word Embedding技术详解

NLP 中的词嵌入是一个重要术语&#xff0c;用于以实值向量的形式表示用于文本分析的单词。这是 NLP 的一项进步&#xff0c;提高了计算机更好地理解基于文本的内容的能力。它被认为是深度学习在解决具有挑战性的自然语言处理问题方面最重要的突破之一。 在这种方法中&#xff…

视觉SLAM中的数学基础:李群与李代数

在视觉SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;中&#xff0c;理解和应用李群&#xff08;Lie Group&#xff09;与李代数&#xff08;Lie Algebra&#xff09;是非常关键的。李群与李代数为描述和处理空间中的连续变换&#xff08;如旋转和平移&am…

【OCR 学习笔记】二值化——局部阈值方法

二值化——局部阈值方法 自适应阈值算法Niblack算法Sauvola算法 自适应阈值算法 自适应阈值算法1用到了积分图&#xff08;Integral Image&#xff09;的概念。积分图中任意一点 ( x , y ) (x,y) (x,y)的值是从图左上角到该点形成的矩形区域内所有值的和。即&#xff1a; I (…

逻辑回归之鸢尾花数据集多分类任务

目录 1.导入数据 2.定义多分类模型 3.准备测试数据 4.绘制决策边界 对于多分类任务&#xff0c;其实就是多个二分类任务。 先分黑色(标签为1)和其他(标签为0)&#xff0c;在这个基础上再去分红色和绿色&#xff0c;此时就将红色标签设置为1&#xff0c;其他设置为0&#x…

关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析

本文结合相关论文对CSS信号的数学形式、调制解调、发射接收以及同步估计做了全面分析&#xff0c;希望有助于更好地理解lora信号 long-range (LoRa) modulation, also known as chirp spread spectrum (CSS) modulation, in LoRaWAN to ensure robust transmission over long d…

Unity(2022.3.38LTS) - 页面介绍

目录 A. 创建项目 B.Unity 编辑器页面 C. 自己点点 A. 创建项目 有多个编辑器版本的选择编辑器. 3D和2D的区别就是初始化的包不同,这些包打开项目之后都可以在自行下载,随意切换, B.Unity 编辑器页面 Unity 编辑器页面是一个高度集成且功能丰富的开发环境&#xff0c;为游…