shell端口分配计算代码

本文主要讲的是思想
当前的端口计算是直接获取服务器已经使用得端口和数据库表中已经配置的valid=1端口,还有该机器新分配的当前端口作为排除目标,排除后得到的端口再按顺序使用.
支持任意网段,任意DB,任意端口,任意ID服
>/tmp/ports.txt
ports=$(cat /tmp/ports.txt)
MYSQL_CMD='mysql -u123 -p123 -h123 -e'
serverport=$(ss -tln|awk '{print $4}'|grep -v '[a-Z]'|awk -F: '{print $2}'|grep -v '^$'|sort -nr|uniq)
gameport=$($MYSQL_CMD 'select port from port.port where valid=1;'|grep -v port|sort -nr|uniq)
range_start=10000 range_end=65432 num_ports=5 i=0
lemon(){
for port in $(seq $range_start $range_end); do
  if [[ ! "$gameport" =~ $port ]] && [[ ! "$serverport" =~ $port ]] && [[ ! "$ports" =~ $port ]]; then
    var_name="port_$i"
    eval "$var_name=$port"
    i=$((i+1))
  fi
  if [[ $i -eq $num_ports ]]; then
    break
  fi
done
for ((j=0; j<i; j++)); do
  var_name="port_$j"
  #eval "echo $var_name=\$$var_name"
done
}
lemon
echo $port_0>>/tmp/ports.txt
echo $port_1>>/tmp/ports.txt
echo $port_2>>/tmp/ports.txt
echo $port_3>>/tmp/ports.txt
echo $port_4>>/tmp/ports.txt
echo $port_0
echo $port_1
echo $port_2
echo $port_3
echo $port_4

文件内容如下
网段 区服 数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值