#!/bin/bash
rangeStart=$1
rangeEnd=$2
if [ $1 -le $2 ]; then
echo "123" > /dev/null
else
echo "error: please check port range"
exit
fi
PORT=0
function Listening {
TCPListeningnum=`netstat -an | grep ":$1 " | awk '/^tcp.*/ && $NF == "LISTEN" {print $0}' | wc -l`
UDPListeningnum=`netstat -an | grep ":$1 " | awk '/^udp.*/ && $NF == "0.0.0.0:*" {print $0}' | wc -l`
(( Listeningnum = TCPListeningnum + UDPListeningnum ))
if [ $Listeningnum == 0 ]; then
echo "0"
else
echo "1"
fi
}
function random_range {
shuf -i $1-$2 -n1
}
function get_random_port {
templ=0
while [ $PORT == 0 ]; do
temp1=`random_range $1 $2`
if [ `Listening $temp1` == 0 ] ; then
PORT=$temp1
fi
done
echo "port=$PORT"
}
get_random_port ${rangeStart} ${rangeEnd};
sh test.sh 10001 10001
port=10001
sh test.sh 10001 10020
port=10009
sh test.sh 10020 10001
error: please check port range
参考