Shell獲取指定區間隨機未占用的端口號


說明

最近在寫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 系統和進程資源進行監控

Shell 中的隨機數生成方法

聲明:本文禁止碼迷/布布扣 等爬蟲網站轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM