现象
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文件中