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