端口检测
端口检测
1 #!/bin/bash 2 3 #list="10.68.133.104 10.68.133.105 10.68.133.106 10.68.133.107 10.68.133.108 10.68.133.109 10.68.133.110 10.68.133.111 10.68.133.112 10.68.133.113 10.68.133.114" 4 #list="10.31.126.37" 5 ports="22" 6 j="22" 7 #ports="6379 6378" 8 for i in `cat hosts_titan600` 9 do 10 # for j in $ports 11 # do 12 # echo $i $j is apoint 13 # ssh -v -p $j $i|grep "established" 14 nc $i $j </dev/null 2>/dev/null 15 if [ $? -eq 0 ];then 16 echo $i $j connect success 17 else 18 echo $i $j connect failure 19 fi 20 # done 21 done
# 备注: nc对于部分端口测试存在问题。今天10.31.x.x 5672没有通过,但是ssh通过了。特地搜索ssh打印debug信息方式
function portCheck(){
num=`ssh -o ConnectTimeout=1 -v -p $2 $1 2>&1 |grep "established."|wc -l`
if [ $num -eq 1 ];then
return 0
else
#return 返回的是状态码,函数结束 return不返回函数返回值 可以在前面用 echo 返回函数返回值(返回值给以给变量),
#return 返回指定函数退出状态码(状态码仅提示命令状态)
#echo 返回的是函数返回值,函数退出状态码是函数最后一条命令的退出状态码
return 1
fi
}
#portCheck $1 $2
#if [ $? -eq 0 ];then
# echo $1 port is successful
#fi
function takeIpPort(){
OLDIFS=$IFS
IFS=$'\n'
for i in `cat ipInfo.txt`
do
OLDIFS1=$IFS
IFS=$OLDIFS
iplists=`echo $i|awk '{print $1}'|sed s/,/\ /g`
ipport=`echo $i|awk '{print $2}'|sed s/,/\ /g`
for j in `echo $iplists`
do
for k in `echo $ipport`
do
portCheck $j $k
if [ $? -eq 0 ];then
echo $j $k sucessful
else
echo $j $k fail
# exit
fi
done
done
IFS=$OLDIFS1
done
IFS=$OLDIFS
}
takeIpPort
exit

浙公网安备 33010602011771号