什么是Linux系统中nc命令?nc命令的用法详解

发布时间 - 2017-05-30 00:00:00    点击率:

这篇文章主要介绍了linux系统中nc命令的基本用法,nc命令非常之强大,这里先简单介绍它用来作端口扫描以及文件传输等的基础使用。

功能说明:功能强大的网络工具,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍,功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。
nc可以提供如下的网络功能:
1) 监听特定端口,这时候nc就可以作为一个服务器,但是我发现这样使用nc生成的服务器仅仅是一个echo服务器而已,没有其他更加强大的功能.
2) 连接特定端口,这时候nc就成为了一个客户端,同样的,也是一个简单的客户端,只能起echo的作用.
3) 扫描端口,这可以作为查询某个机器上是否开启了某个端口.
几个具体的使用例子 


例子1:
使用nc打开linux下的特定端口
nc -lp 23 & (即telnet)
netstat -an|grep 23 (查看端口是否正常打开)

例子2:
使用nc进行文件传输,命令
ssh root@www.freetstar.com “( nc -l 10003 > destination 2>/dev/null & )” && cat source | nc www.freetstar.com 10003
&& 前边ssh登录到远程主机www.freetstar.com上,用nc命令打开本地的10003端口,成为后台进程
&&后边,在本地机器上打开source文件,并将其重定向到www.freetstar.com的10003号端口,也就是让远程www.freetstar.com主机10003号端口接收source文件

例子3:
使用nc扫描linux下的特定端口
nc -v -z host.example.com 70-80
扫描端口(70到80),可指定范围。-v输出详细信息。

例子4:
克隆硬盘或分区
类似于例子2,只需要由dd获得硬盘或分区的数据,然后传输即可。
克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工 具光盘)启动系统后
server1上执行:# nc -l -p 1234 | dd of=/dev/sda
server1上执行1234号端口监听,将得到的文件保存到/dev/sda上
server2上执行:# dd if=/dev/sda | nc server1 1234

例子5:
保存Web页面
while true; do nc -l -p 80 -q 1
例子6:
模拟HTTP Headers
[root@hatest1 ~]# nc www.huanxiangwu.com 80
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
在nc命令后,输入红色部分的内容,然后按两次回车,即可从对方获得HTTP Headers内容。

例子7:
聊天
server1上监听1234端口[root@hatest2 tmp]# nc -lp 1234
server2上向server1的1234端口发送消息[root@hatest1 ~]# nc server1 1234
这样,双方就可以相互交流了。使用Ctrl+D正常退出。
更多的使用,查看man手册

nc example.host port 打开与example.host主机的port的一个TCP链接.如果链接失败,不显示任何错误信息,仅仅退出
nc -p 31337 -w 5 example.host 42 打开与example。host主机的42号端口的一个TCP链接。用31337作为源端口,超时链接时间为5秒
nc -u example.host 53 指定协议为udp协议

语  法:nc [-hlnruz][-g][-G][-i][-o][-p][-s][-v...][-w][主机名称][通信端口...]

参  数:
  -g   设置路由器跃程通信网关,最多可设置8个。
  -G   设置来源路由指向器,其数值为4的倍数。
  -h   在线帮助。
  -i   设置时间间隔,以便传送信息及扫描通信端口。
  -l   使用监听模式,管控传入的资料。
  -n   直接使用IP地址,而不通过域名服务器。
  -o   指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
  -p   设置本地主机使用的通信端口。
  -r   乱数指定本地与远端主机的通信端口。
  -s   设置本地主机送出数据包的IP地址。
  -u   使用UDP传输协议。
  -v   显示指令执行过程。
  -w   设置等待连线的时间。
  -z   使用0输入/输出模式,只在扫描通信端口时使用。

来看下它的基本用法:

1.监听本地端口

root@10.1.1.43:~# nc -l -p 1234 
root@10.1.1.43:~# netstat -tunlp | grep 1234

tcp        0      0 0.0.0.0:1234            0.0.0.0:*               LISTEN      15543/nc

2.端口扫描

root@10.1.1.43:~# nc -v -w 10 10.1.1.180 80

(UNKNOWN) [10.1.1.180] 80 (www) open

root@10.1.1.43:~# nc -v -w 10 10.1.1.180 -z 80-30000

(UNKNOWN) [10.1.1.180] 22000 (?) open
(UNKNOWN) [10.1.1.180] 80 (www) open

3.文件传出

源10.1.1.43 text.txt

目的 10.1.1.180

root@10:~# nc -l -p 1234 > test.txt #开10.1.1.180:1234端口监听,并将socket传输过来的数据重定向到test.txt文件 test 43 nc
root@10.1.1.43:~#cat test.txt    
root@10.1.1.43:~# nc  10.1.1.180 1234 < test.txt  #连接远程的10.1.1.180,从test.txt的路径从定向到socket,从而将文件传输到远方。
root@10:~# cat test.txt
test 43 nc


4.目录传输

源10.1.1.43 python_program

目的 10.1.1.180

root@10:~# nc -l -p 1234 | tar xzvf -
root@10.1.1.43:~# tar czvf -  python_program | nc 10.1.1.180 1234

python_program/
python_program/1.py
python_program/4.py
python_program/3.py

5.测试UDP端口

root@172.16.211.34:web# netstat -tunlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1111/sshd          
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               887/dhclient

root@172.16.211.35:~# nc -vuz  172.16.211.34 68

Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!


# linux  # 是一个  # 文件传输  # 因为它  # 就可以  # 客户端  # 重定向  # 这时候  # 几个  # 端口扫描  # 短小精悍 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 require机制详解及实例代码  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  浅述节点的创建及常见功能的实现  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Swift中循环语句中的转移语句 break 和 continue  iOS UIView常见属性方法小结  开心动漫网站制作软件下载,十分开心动画为何停播?  网站制作企业,网站的banner和导航栏是指什么?  详解Android图表 MPAndroidChart折线图  Laravel如何实现模型的全局作用域?(Global Scope示例)  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  免费视频制作网站,更新又快又好的免费电影网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  如何在腾讯云服务器快速搭建个人网站?  Android实现代码画虚线边框背景效果  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  bootstrap日历插件datetimepicker使用方法  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  JavaScript中的标签模板是什么_它如何扩展字符串功能  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在七牛云存储上搭建网站并设置自定义域名?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  JavaScript实现Fly Bird小游戏  LinuxCD持续部署教程_自动发布与回滚机制  简单实现Android文件上传  iOS验证手机号的正则表达式  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Android Socket接口实现即时通讯实例代码  敲碗10年!Mac系列传将迎来「触控与联网」双革新  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何用已有域名快速搭建网站?  如何在IIS中配置站点IP、端口及主机头?  如何基于PHP生成高效IDC网络公司建站源码?  大型企业网站制作流程,做网站需要注册公司吗?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  图册素材网站设计制作软件,图册的导出方式有几种?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  音响网站制作视频教程,隆霸音响官方网站?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)