說明
最近在寫Jenkins自動運維的腳本,由於是用的docker,部署的時候啟動容器端口號沖突會導致部署失敗,用的微服務也不在乎端口什么的,只求部署成功,所以想了很久,參考了一些文章,還有運維大哥的調試,終於實現了一個腳本,分享出來大家看看,為社區添一塊磚加一片瓦 :happy:
本文主題是得到個未被占用的端口號,這個端口號可以被指定區間
腳本內容
#!/bin/bash
# @Desc 此腳本用於獲取一個指定區間且未被占用的隨機端口號
# @Author Hellxz <hellxz001@foxmail.com>
PORT=0
#判斷當前端口是否被占用,沒被占用返回0,反之1
function Listening {
TCPListeningnum=`netstat -an | grep ":$1 " | awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`
UDPListeningnum=`netstat -an | grep ":$1 " | awk '$1 == "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 1 10000; #這里指定了1~10000區間,從中任取一個未占用端口號
參考文章
IBM Developer 使用 shell 腳本對 Linux 系統和進程資源進行監控
聲明:本文禁止碼迷/布布扣 等爬蟲網站轉載。