nc: invalid option -- ‘z‘ 解决办法

发布时间 2023-03-23 20:45:57作者: 沐春风-燕南飞

现象
RHEL 7.2 系统出现下面的错误

nc -z -v -w1 host port
nc: invalid option -- 'z'
Ncat: Try `--help' or man(1) ncat for more information, usage options and help. QUITTING.

原因
RHEL 7之后nc 命令不再支持-z 参数

解决办法
执行下列命令:

cat /dev/null | nc <hostname> <port>
或者

nc <hostname> <port> </dev/null
可以代替-z参数的作用, 需要注意的是命令执行后不会有任何输出内容,如果继续拼接命令的话会导致得到的结果始终为空

nc命令批量测试端口脚本

#!/bin/bash
> nc.log
sed -i 's#https://##g' nc.conf
sed -i 's#http://##g' nc.conf
sed -i 's#[/]*##g' nc.conf
split -l 100 nc.conf spilitnc.conf

for j in `ls spilitnc.conf*`
do

for i in `cat "${j}"`
do
ip=`echo $i |awk -F':' '{print $1}'`
port=`echo $i |awk -F':' '{print $2}'`
cat /dev/null| nc -v -w 3 -t $ip $port
if [ $? -eq 0 ];then
echo "$ip:$port connect success" >>nc.log
else
echo "$ip:$port connect failed" >>nc.log
fi
done
done

rm -f spilitnc.conf*

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

使用方法:
将 脚本复制为nc.sh 然后将要测试的域名和端口例如https://127.0.0.1:8080/复制到 nc.conf文件中,脚本会自动去掉https://这类符号只保留域名ip和端口, chmod +x ./nc赋权后执行脚本./nc.sh. 所有测试结果会记录在nc.log文件中