#!/bin/bash

InnerIPv4CIDR=""
InnerIPv6CIDR=""

InnerIPv4=""
InnerIPv6=""


# 获取服务器的公网IP地址
get_Internal_IP_CIDR() {

	local interface_prefix=("[[:space:]]eth[0-9]{1,2}" "[[:space:]]ens[0-9]{1,3}" "[[:space:]]eno[0-9]{1,3}" "[[:space:]]enp[0-9]{1,2}")
  local real_interface="eth90"

  for interface in "${interface_prefix[@]}"; do
      echo $(ip link show) | grep -oE ${interface} | head -1
      if [[ $? -eq 0 ]]; then
          real_interface=$(echo $(ip link show) | grep -oE ${interface} | head -1 | cut -d" " -f2)
          echo "当前主机的真实内网网卡为 => [$real_interface]"
          break
    fi
  done

  # 提取IPv4地址（CIDR格式）
  local ipv4_regex="inet[[:space:]](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/[0-9]{1,2}"

  # 提取IPv6地址（CIDR格式）
  loca ipv6_regex="inet6[[:space:]]([0-9a-fA-F]{0,4}(:[0-9a-fA-F]{0,4}){1,7})\/[0-9]{1,3}"

  # 查找IPv4地址
  local inner_ipv4=$(echo $(ip addr show $real_interface) | grep -oE $ipv4_regex | cut -d" " -f2)
  InnerIPv4CIDR=$inner_ipv4
  echo "Interface: $real_interface, IPv4 Address: $inner_ipv4"

   # 查找IPv6地址
  local inner_ipv6=$(echo $(ip addr show $real_interface) | grep -oE $ipv6_regex | cut -d" " -f2)
  InnerIPv6CIDR=$inner_ipv6
  echo "Interface: $real_interface, IPv4 Address: $inner_ipv6"

}

get_Internal_IP_() {

	get_Internal_IP_CIDR

	InnerIPv4=$(echo $InnerIPv4CIDR | cut -d "/" -f1)
	InnerIPv6=$(echo $InnerIPv6CIDR | cut -d "/" -f1)

	echo "服务器的内网IPv4地址为 $InnerIPv4"
	echo "服务器的内网IPv6地址为 $InnerIPv6"

}

get_Internal_IP_CIDR