linux nc命令参数及用法详解之毕业纪

            linux nc命令参数及用法详解
一、功能说明:强大的网络工具netcat
二、语  法:nc [options]

[options]
-d        后台模式
-e prog        程序重定向,一旦连接,就执行 [危险!!]
-g <网关>    设置路由器跃程通信网关,最多可设置8个。
-G <指向器数目>    设置来源路由指向器,其数值为4的倍数。
-i <延迟秒数>    延时的间隔
-l        监听模式,用于入站连接
-L        连接关闭后,仍然继续监听
-n        直接使用IP地址,而不通过域名服务器。
-o <输出文件>    指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p <端口>    设置本地主机使用的通信端口。
-r        随机本地及远程端口
-s <源ip地址>    设置本地主机送出数据包的IP地址。
-t        使用TELNET交互方式
-u        使用UDP传输协议。
-v        详细输出(用两个-v可得到更详细的内容)
-w <超时秒数>    设置等待连线的时间,即指定多少秒后,断开。
-z        使用0输入/输出模式,只在扫描通信端口时使用。
-h        帮助信息
主机名/ip    指定访问的主机名/ip
port        监听远程主机的端口,可以是单个或范围(M-N)。

nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源地址>][-v...][-w<超时秒数>][主机名称][通信端口...]


三、应用

①端口扫描(常用于检测某个ip的某个服务[端口]是否被监听,即某服务是否启动)
格式:
    nc  -v  -w 2 -z $ip  $port

-v            显示指令执行过程。
-w  <超时秒数>        设置等待连线的时间。
-z            使用0输入/输出模式,只在扫描通信端口时使用。

②远程数据的传输(源主机---->目的主机($ip需监听端口)。传完后ctrl+c中断连接,缺点:不知道什么时候传完)
格式:
    远程(目的)主机:nc -l $port > $file
    源主机:      nc $ip $port < $file

③简单的及时聊天(需要在某台主机上,监听端口$port,别的主机可以连接,进行聊天,Ctrl+c,Ctrl+d退出)
格式:
    远程(目的)主机:nc -l $port
    源主机:      nc $ip $port



④硬盘或分区(同②,源主机---->目的主机,克隆硬盘或分区的操作,不应在已经mount的的系统上进行。)
格式:
    远程(目的)主机:nc -l $port |dd of=分区
    源主机:      dd if=分区 | nc $ip $port



四、例子
①批量检测服务器指定端口开放情况:
1、假如我们要监控一堆指定的IP和端口,可新建一个文件(第1列服务器IP,第2列要监控的端口)。
# vim /scripts/ip-ports.txt

    192.168.0.100 80  
    192.168.0.100 8081  
    192.168.0.101 8082  
    192.168.1.100 21

2、我们可以写这样一个脚本来批量检测端口是否开放:
# 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

3、执行脚本查看运行结果如下:
# chmod a+x  /scripts/ncports.sh
# /scripts/ncports.sh
192.168.0.100 80:ok
192.168.0.100 8081:ok
192.168.0.101 8082:ok
192.168.1.100 21:fail


你可能感兴趣的:(nc,netcat)