Shell 지정 한 구간 에서 무 작위 로 사용 되 지 않 은 포트 번호 가 져 오기

1527 단어
설명 하 다.
최근 에 Jenkins 가 자동 으로 운영 하 는 스 크 립 트 를 쓰 고 있 습 니 다. docker 를 사용 하기 때문에 배치 할 때 용기 포트 번호 충돌 을 시작 하면 배치 에 실패 할 수 있 습 니 다. 사용 하 는 마이크로 서비스 도 포트 따 위 는 신경 쓰 지 않 고 배치 성공 만 을 추구 하기 때문에 오랫동안 생각 했 습 니 다. 몇 가지 글 을 참고 하고 운 비 형님 의 디 버 깅 도 실 현 했 습 니 다. 드디어 스 크 립 트 를 실 현 했 습 니 다. 공유 해 보 세 요.지역 사회 에 벽돌 과 기 와 를 추가 합 니 다: happy:
본 논문 의 주 제 는 사용 되 지 않 은 포트 번 호 를 얻 는 것 입 니 다. 이 포트 번 호 는 구간 을 지정 할 수 있 습 니 다.
스 크 립 트 내용
#!/bin/bash
# @Desc                         
# @Author Hellxz 

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 는 셸 스 크 립 트 를 사용 하여 Linux 시스템 과 프로 세 스 자원 을 모니터링 합 니 다.
Shell 의 난수 생 성 방법
성명: 본 고 는 코드 팬/버클 등 파충류 사이트 의 전 재 를 금지한다.

좋은 웹페이지 즐겨찾기