2019-04-02 网络命令-nc

Linux系统下网络工具nc的使用验证

nc的man帮助输出

NCAT(1)                                          Ncat Reference Guide                                         NCAT(1)

NAME
       ncat - Concatenate and redirect sockets

SYNOPSIS
       ncat [OPTIONS...] [hostname] [port]

DESCRIPTION
       Ncat is a feature-packed networking utility which reads and writes data across networks from the command line.
       Ncat was written for the Nmap Project and is the culmination of the currently splintered family of Netcat
       incarnations. It is designed to be a reliable back-end tool to instantly provide network connectivity to other
       applications and users. Ncat will not only work with IPv4 and IPv6 but provides the user with a virtually
       limitless number of potential uses.

       Among Ncat's vast number of features there is the ability to chain Ncats together; redirection of TCP, UDP,
       and SCTP ports to other sites; SSL support; and proxy connections via SOCKS4 or HTTP proxies (with optional
       proxy authentication as well). Some general principles apply to most applications and thus give you the
       capability of instantly adding networking support to software that would normally never support it.

OPTIONS SUMMARY
           Ncat 7.50 ( https://nmap.org/ncat )
           Usage: ncat [options] [hostname] [port]

           Options taking a time assume seconds. Append 'ms' for milliseconds,
           's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).
             -4                         Use IPv4 only
             -6                         Use IPv6 only
             -U, --unixsock             Use Unix domain sockets only
             -C, --crlf                 Use CRLF for EOL sequence
             -c, --sh-exec     Executes the given command via /bin/sh
             -e, --exec        Executes the given command
                 --lua-exec   Executes the given Lua script
             -g hop1[,hop2,...]         Loose source routing hop points (8 max)
             -G                      Loose source routing hop pointer (4, 8, 12, ...)
             -m, --max-conns         Maximum  simultaneous connections
             -h, --help                 Display this help screen
             -d, --delay 

1:监听指定端口
监听本地端口
nc -l 12345 ,如果你要将监听的输入指定到指定的文件,比如/dev/zero
nc -l 12345 > /dev/null
2:向指定主机的某一端口发送连接
nc www.example.com 12345 (向www.example.com 主机的12345 端口建立tcp连接)
3:若想使用UDP连接,则两端都要使用-u 选项
4: -v 选项,显示nc 输出内容
例如 nc -l-v 12345 > /dev/null
输出:
root@ubuntu:~# nc -l -v -p 12345 > /dev/null
Listening on [0.0.0.0] (family 0, port 12345)
nc localhost -v 12345
输出:
root@ubuntu:~# nc -v localhost 12345
Connection to localhost 12345 port [tcp/*] succeeded!
5:可以使用nc 命令,-z选项扫描某一主机的端口是否开放
例如:检测我本机的10-30端口有哪些是开放的
nc -v -z localhost 10-30

6:使用 -w 选项限定空闲时间
服务端,可以使用 -w 选项来设置空闲时间限制。也就是说,当连接空闲超时时,连接会自动断开。注意,-w 选项并不会影响 -l 选项,也就是说,
如果还没有连接进来时,即使超出了超时时间,那么服务端的监听并不会自动断开。这里的超时是相对于连接来说的。比如下面服务端的设定

7:进行代理
比如我使用如下命令
nc -v -l 8899 | nc -v www.sina.com.cn 80
上面的意思是,先使 nc 监听在 8899 端口。如果客户端访问服务器的 8899 端口,那么就将请求通过管道送到另一边的 nc 命令中,该 nc 命令再将请求内容发往 www.sina.com.cn ,
当 www.sina.com.cn 响应时,所返回网站内容默认输出到标准输出上(文件描述符为 1),此时我们将这些内容重定向到 tunnel 这个有名管道中,一旦管道有了内容,它就输送到标准输入(0),
接着标准输入的内容被左端的 nc 接收,最后 nc 就将这些内容返回到客户端去

1:远程拷贝文件
在本地输出 文件debian.img 到 192.168.5.40 主机12345端口监听
nc -v 192.168.5.40 12345 < debian.img
在192.168.5.40 主机12345端口监听,将文件指定为debian-copy.img
nc -l -v 12345 > debian-copy.img

  1. 克隆硬盘或分区
    这个命令真的蛮喜欢的,以前备份操作制作好的debian系统,尤其是用dd备份磁盘,例,你可以通过dd ,然后nc 进行网络传输,不需要两次操作操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。
    克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,比如LiveUSB模式,在server2上进行类似的监听动作:

nc -l -p 1235 | dd of=/dev/sda(你可以不指定为/dev/sda,可以是任何格式,比如debian.image,这样就把server1 /dev/sda的磁盘拷贝为debian.image)

server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:

dd if=/dev/sda bs=1M | nc 192.168.5.40 12345

3:批量检测服务器指定端口开放情况

a:假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。

vim /scripts/ip-ports.txt

192.168.5.100 80
192.168.5.101 80
192.168.5.102 80
192.168.5.103 80
b:我们可以写这样一个脚本来批量检测端口是否开放:

vim /scripts/ncports.sh

!/bin/bash

检测服务器端口是否开放,成功会返回0值显示ok,失败会返回1值显示fail

cat /scripts/ip-ports.txt | while read line 
do 
nc -w 10 -z $line > /dev/null 2>&1 
if [ $? -eq 0 ] 
then 
echo $line:ok 
else 
echo $line:fail 
fi 
done

你可能感兴趣的:(2019-04-02 网络命令-nc)