Compare commits
4 Commits
71d487c59a
...
1be07db276
| Author | SHA1 | Date | |
|---|---|---|---|
| 1be07db276 | |||
| 89f24a7fef | |||
| 7d04ad7532 | |||
| b0f1d5d600 |
@@ -48,20 +48,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
# 版本: 1.0.0
|
# 版本: 1.0.0
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
||||||
# 远程仓库 URL 配置
|
# 远程仓库 URL 配置(如果调用者未定义,则使用默认值)
|
||||||
readonly REMOTE_BASE_URL="${REMOTE_LIB_URL:-https://gitea.bcde.io/wangdefa/tools/raw/branch/main}"
|
if [[ -z "${REMOTE_BASE_URL:-}" ]]; then
|
||||||
|
readonly REMOTE_BASE_URL="${REMOTE_LIB_URL:-https://gitea.bcde.io/wangdefa/tools/raw/branch/main}"
|
||||||
|
fi
|
||||||
|
|
||||||
# 临时目录用于存储下载的文件
|
# 临时目录用于存储下载的文件
|
||||||
readonly REMOTE_TMP_DIR="$(mktemp -d)"
|
readonly REMOTE_TMP_DIR="$(mktemp -d)"
|
||||||
|
|||||||
@@ -48,20 +48,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -49,20 +49,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -49,20 +49,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -48,20 +48,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -49,20 +49,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
|
|||||||
@@ -48,20 +48,31 @@ load_common_libs() {
|
|||||||
|
|
||||||
# 使用远程库
|
# 使用远程库
|
||||||
if [[ "$use_remote" == "true" ]]; then
|
if [[ "$use_remote" == "true" ]]; then
|
||||||
|
# 下载到临时文件(避免 process substitution 与 set -u 的交互问题)
|
||||||
|
local temp_loader
|
||||||
|
temp_loader=$(mktemp)
|
||||||
|
|
||||||
if command -v curl &>/dev/null; then
|
if command -v curl &>/dev/null; then
|
||||||
echo "[INFO] 使用 curl 下载远程库..." >&2
|
echo "[INFO] 使用 curl 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" -o "$temp_loader" 2>/dev/null; then
|
||||||
if source <(curl -fsSL "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v wget &>/dev/null; then
|
elif command -v wget &>/dev/null; then
|
||||||
echo "[INFO] 使用 wget 下载远程库..." >&2
|
echo "[INFO] 使用 wget 下载远程库..." >&2
|
||||||
# shellcheck disable=SC1090
|
if wget -qO "$temp_loader" "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null; then
|
||||||
if source <(wget -qO- "${REMOTE_BASE_URL}/common/remote_loader.sh" 2>/dev/null); then
|
# shellcheck disable=SC1090
|
||||||
return 0
|
if source "$temp_loader"; then
|
||||||
|
rm -f "$temp_loader"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$temp_loader"
|
||||||
echo "[ERROR] 无法加载公共库" >&2
|
echo "[ERROR] 无法加载公共库" >&2
|
||||||
echo "[ERROR] - 本地库不存在" >&2
|
echo "[ERROR] - 本地库不存在" >&2
|
||||||
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
echo "[ERROR] - 远程下载失败(需要 curl 或 wget)" >&2
|
||||||
@@ -77,7 +88,7 @@ load_common_libs
|
|||||||
readonly DEFAULT_NUMBER=1
|
readonly DEFAULT_NUMBER=1
|
||||||
readonly DEFAULT_SHAPE="VM.Standard.A1.Flex"
|
readonly DEFAULT_SHAPE="VM.Standard.A1.Flex"
|
||||||
readonly DEFAULT_SHAPE_CONFIG="1+6"
|
readonly DEFAULT_SHAPE_CONFIG="1+6"
|
||||||
readonly DEFAULT_IMAGE_NAME="Canonical-Ubuntu-20.04-aarch64-2025.05.20-0"
|
readonly DEFAULT_IMAGE_NAME="Canonical-Ubuntu-20.04-aarch64-2025.07.23-0"
|
||||||
readonly DEFAULT_BOOT_VOLUME_SIZE=0
|
readonly DEFAULT_BOOT_VOLUME_SIZE=0
|
||||||
readonly DEFAULT_VPU=120
|
readonly DEFAULT_VPU=120
|
||||||
readonly DEFAULT_DOMAIN=0
|
readonly DEFAULT_DOMAIN=0
|
||||||
@@ -361,9 +372,18 @@ main() {
|
|||||||
local fifo
|
local fifo
|
||||||
fifo=$(mktemp -u)
|
fifo=$(mktemp -u)
|
||||||
mkfifo "$fifo"
|
mkfifo "$fifo"
|
||||||
trap 'rm -f "$fifo"' EXIT
|
|
||||||
|
# 启动后台任务
|
||||||
configure_network "$ocid" "$fifo" &
|
configure_network "$ocid" "$fifo" &
|
||||||
|
local bg_pid=$!
|
||||||
|
|
||||||
|
# 读取结果
|
||||||
read subnet_id < "$fifo"
|
read subnet_id < "$fifo"
|
||||||
|
|
||||||
|
# 等待后台任务完成并清理
|
||||||
|
wait "$bg_pid"
|
||||||
|
rm -f "$fifo"
|
||||||
|
|
||||||
log_success "网络配置完成 (子网ID: $subnet_id)"
|
log_success "网络配置完成 (子网ID: $subnet_id)"
|
||||||
else
|
else
|
||||||
log_info "使用指定的子网ID: $subnet_id"
|
log_info "使用指定的子网ID: $subnet_id"
|
||||||
|
|||||||
Reference in New Issue
Block a user