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