nc命令

nc:全称netcat,可以打开tcp连接,发送udp数据包,监听任意tcp和udp的端口,实现端口扫描和同时处理IPv4和IPv6。

 

1.参数

-4      使用IPv4地址。

-6      使用IPV6地址..

-D      开启debugging 在 socket.

-d      不尝试从stdin读取数据.

-h      查看帮助信息

-i     指定文本行发送和接收的延时时间.  也可以制造连接到多端口的延时.

-I     指定TCP接收缓冲区大小

-n      任何指定的地址,主机名或端口都不做任何DNS或服务解析.

-k     强制nc持续监听另一个连接直到它的连接完成.  没有 -l 选项是错误的.     

-l      用于指定nc应该监听一个传入的连接,而不是连接到远程主机.  该选项不能与以下选项联合使用-p, -s, 或 -z 选项.  此外, 任何用-w选项指定的超时会被忽略.- 

-p source_port   指定nc使用的源端口,受到权限和可用性的限制.

-r      指定源和/或目标端口随机选择而不是一个范围序列或系统分配的顺序.

-s source      指定源IP的接口用于发送数据包.  

-u      使用UDP协议。

-V rtable   设置要使用的路由表. 默认是 0.

-v     使nc给出更详细的输出.

-w timeout      无法建立的或者闲置的连接在指定秒数之后超时. .

 -z      指定nc只是扫描正在监听的守护进程,不发送任何数据.  不可和-l选项同时使用。

-q     指定客户端收到EOF之后退出的时间

2.实际应用

1)传输文件  

使用-l在本地监听一个端口,并把输出定向到一个文件,然后从另一台设备上往此端口上传输文件。

服务器1:nc -l 8899 > 123.txt

服务器2:nc 192.168.0.243 8899 <test_curl  

这样就把test_curl给传过来了

 

或者:

server1:nc -l 8899 | tar zxf -

server2:tar zcf -  node-v0.12.2.tar.gz | nc 192.168.0.243 8899

 

2)端口扫描或探测

[root@jjjjjjjjjj ~]# nc -v  -w 2 192.168.0.243 -z 20-30

nc: connect to 192.168.0.243 port 20 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 21 (tcp) failed: Connection refused

Connection to 192.168.0.243 22 port [tcp/ssh] succeeded!

nc: connect to 192.168.0.243 port 23 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 24 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 25 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 26 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 27 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 28 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 29 (tcp) failed: Connection refused

nc: connect to 192.168.0.243 port 30 (tcp) failed: Connection refused

 

也可指定单个端口

nc -v  -w 2 192.168.0.243  80

 

 

原文地址:https://www.cnblogs.com/pycode/p/8734255.html