说明

最近在写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 中的随机数生成方法

声明:本文禁止码迷/布布扣 等爬虫网站转载。

Shell获取指定区间随机未占用的端口号的更多相关文章

  1. javascript获取指定区间范围随机数的方法

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code //获取指定区间范围随机数,包括lowerValue和upperValue funct ...

  2. javascript获取指定区间范围随机数

    //获取指定区间范围随机数,包括lowerValue和upperValuefunction randomFrom(lowerValue,upperValue){    return Math.floo ...

  3. shell 获取指定ip的丢包率

    shell 获取指定ip的丢包率 丢包率大于10%就重新网络 使用sed 替换字符串 [[ $(ping -c 10 -W 1 baidu.com | awk '$6 ~ /%/{print $6}' ...

  4. js中如何获取页面的Url,域名和端口号

    有时候通过获取上个页面的Url来做一个跳转,获取域名防止非正常访问 获取上一个页面的一个URL,这个URL一般做一个页面的跳转 window.location.href <script>w ...

  5. Linux 查看tomcat占用的端口号

    第一步:先查看tomcat占用的进程号 ps -ef|grep tomcat 第二步:根据进程号,查看进程所占用的端口 netstat -apn 由此得知,tomcat的进程号是21845,并得到端口 ...

  6. Shell 获取指定行的内容

    需求: 有一个文件,根据指定的字符串,得到该字符串上两行的内容. 文件内容如下: linux-56:# cat sys.ttconnect.ini # Copyright (C) 1999, 2006 ...

  7. Shell获取指定时间

    时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...

  8. shell 获取指定目录下文件名

    有两个目录a.b,两个文件夹目录里有一些文件的文件名是一样,不过后缀名不同,我想把a文件夹下跟b文件夹里相同文件名的文件覆盖到b去,并删除b里同名而不同后缀的文件,文件很多    #!/bin/bas ...

  9. windows系统查看被占用的端口号

    我们需要查看80端口被哪个进程占用了, 1. netstat -ano|findstr 80

随机推荐

  1. FileReader生成图片dataurl的分析

    目录 相关代码及html(来源:百度百科) File API及FileReader简介 结合补充知识进行代码分析 修改尝试: 拖曳图片到网页完成转换 相关代码及html(来源:百度百科) <!D ...

  2. android 第三方开源库 学习汇总

    依赖注入框架ButterKnife  https://github.com/JakeWharton/butterknife  学习过程     专注于android的View注入框架,并不支持其他方面 ...

  3. Easypoi实现单模板生成多页wrod文档

        EasyPoi可以很方便的通过一个word模板,然后通过填充模板的方式生成我们想要的word文档.但是碰到了一个单模板生成多页数据的场景,比如一个订单详情信息模板,但是有很多订单,需要导入到一 ...

  4. 使用XDocReport将HTML格式数据转换为Word

    文档地址:https://github.com/opensagres/xdocreport/wiki/DocxReportingQuickStart 本文采用XDocReport集合Freemaike ...

  5. pyecharts的使用

    折线图1 import pyecharts.options as opts from pyecharts.charts import Line ​ x_data = ["Mon", ...

  6. c++产生验证码字符串

    // // Created by lk on 18-10-14. // #include <iostream> #include <cstdlib> #include < ...

  7. python测试开发django-69.templates模板过滤器filter

    前言 templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作. 内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功 ...

  8. WTL 9.0的变化 - atlapp.h

    忽然发现WTL更新到9.0.4140了,便对比了一下 8.1.12085. 先看看atlapp.h中有什么大的变动. 第61行: #if defined(_SYSINFOAPI_H_) &&a ...

  9. 07-numpy-笔记-join

    字符串.join(字符串序列) 一目了然: #!/usr/bin/python # -*- coding: UTF-8 -*- str = "-"; seq = ("a& ...

  10. Python GIL、CPU密集型、IO密集型

    Python GIL(Global Interpreter Lock(全局解释器锁)) 1:进程里面多个线程,线程 共享A=10 2:Python解释器,A改完值之后会传回进程容器,为了防止A和B同时 ...