还有前置OCI环境要安装的,问AI吧
XXXXXXXXXXX的部分替换成自己的,报错直接问AI解决问题杠杠的
#!/bin/bash
#==============================================================
# OCI ARM 实例抢机/升级脚本 (优化版)
#==============================================================
# ============ 基本配置 ============
INSTANCE_OCID="XXXXXXXXXXX"
# 目标配置 - 只抢 4C24G
TARGET_CONFIGS=(
"4:24" # 4 OCPU / 24GB
)
RETRY_INTERVAL=3 # 重试间隔(秒) - 从10秒缩短到3秒
MAX_RETRY_INTERVAL=5 # 最大重试间隔
JITTER=1 # 随机抖动(秒),避免和其他人同步碰撞
# ============ 邮件通知配置 ============
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="465"
SMTP_USER="[email protected]"
SMTP_PASS="XXXXXXXXXXX"
EMAIL_TO="[email protected]"
# ============ Telegram 通知 ============
TG_BOT_TOKEN="XXXXXXXXXXX"
TG_CHAT_ID="XXXXXXXXXXX"
# ============ 日志配置 ============
LOG_FILE="$HOME/upgrade.log"
attempt=0
start_time=$(date +%s)
#==============================================================
# 通知函数
#==============================================================
send_email() {
local subject="$1"
local body="$2"
echo -e "From: ${SMTP_USER}\nTo: ${EMAIL_TO}\nSubject: ${subject}\n\n${body}" | \
curl -s --url "smtps://${SMTP_HOST}:${SMTP_PORT}" \
--ssl-reqd \
--mail-from "${SMTP_USER}" \
--mail-rcpt "${EMAIL_TO}" \
--upload-file - \
--user "${SMTP_USER}:${SMTP_PASS}" \
--login-options AUTH=LOGIN \
--max-time 10 2>/dev/null
}
send_telegram() {
if [[ -n "$TG_BOT_TOKEN" && -n "$TG_CHAT_ID" ]]; then
curl -s --max-time 10 \
"https://api.telegram.org/bot${TG_BOT_TOKEN}/sendMessage" \
-d "chat_id=${TG_CHAT_ID}" \
-d "text=$1" \
-d "parse_mode=HTML" 2>/dev/null
fi
}
notify_success() {
local ocpus="$1"
local memory="$2"
local msg="✅ OCI 实例升级成功!\n配置: ${ocpus} OCPU / ${memory} GB\n共尝试 ${attempt} 次\n时间: $(date '+%Y-%m-%d %H:%M:%S')"
send_email "OCI 抢机成功! ${ocpus}C${memory}G" "$msg"
send_telegram "$(echo -e "$msg")"
echo -e "$msg"
}
log() {
echo "$1" | tee -a "$LOG_FILE"
}
#==============================================================
# 主循环
#==============================================================
log "========================================"
log "[$(date '+%Y-%m-%d %H:%M:%S')] 脚本启动"
log "目标配置: ${TARGET_CONFIGS[*]}"
log "重试间隔: ${RETRY_INTERVAL}s (抖动 ±${JITTER}s)"
log "========================================"
# 启动时发送测试通知
send_telegram "🚀 OCI 抢机脚本已启动
目标配置: ${TARGET_CONFIGS[*]}
重试间隔: ${RETRY_INTERVAL}s"
log "已发送 Telegram 启动通知"
while true; do
((attempt++))
# 轮流尝试不同配置方案
config_index=$(( (attempt - 1) % ${#TARGET_CONFIGS[@]} ))
IFS=':' read -r TARGET_OCPUS TARGET_MEMORY <<< "${TARGET_CONFIGS[$config_index]}"
# 每10次显示一次运行状态摘要 + 发TG通知
if (( attempt % 10 == 1 )); then
elapsed=$(( $(date +%s) - start_time ))
hours=$(( elapsed / 3600 ))
mins=$(( (elapsed % 3600) / 60 ))
log "[$(date '+%Y-%m-%d %H:%M:%S')] 第 $attempt 次尝试 | ${TARGET_OCPUS}C/${TARGET_MEMORY}G | 已运行 ${hours}h${mins}m"
if (( attempt > 1 )); then
send_telegram "❌ #${attempt} 仍在尝试中 | ${TARGET_OCPUS}C/${TARGET_MEMORY}G | 已运行 ${hours}h${mins}m"
fi
fi
# 执行升级请求
result=$(oci compute instance update \
--instance-id "$INSTANCE_OCID" \
--shape-config "{\"ocpus\": $TARGET_OCPUS, \"memory-in-gbs\": $TARGET_MEMORY}" \
--force \
--output json 2>&1)
exit_code=$?
if [[ $exit_code -eq 0 ]]; then
log "============================================"
log "🎉 [$(date '+%Y-%m-%d %H:%M:%S')] 升级成功!"
log "配置: ${TARGET_OCPUS} OCPU / ${TARGET_MEMORY} GB"
log "总尝试次数: ${attempt}"
log "============================================"
notify_success "$TARGET_OCPUS" "$TARGET_MEMORY"
break
else
# 提取错误信息(取message字段或前3行)
error_msg=$(echo "$result" | grep -oP '"message"\s*:\s*"\K[^"]+' | head -1)
if [[ -z "$error_msg" ]]; then
error_msg=$(echo "$result" | head -3)
fi
log "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ #${attempt} ${TARGET_OCPUS}C/${TARGET_MEMORY}G 失败: ${error_msg}"
if echo "$result" | grep -qi "too many requests\|rate limit"; then
log "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️ 触发限流,等待30秒..."
sleep 30
continue
fi
# 随机抖动的重试间隔
jitter_val=$(( RANDOM % (JITTER * 2 + 1) - JITTER ))
sleep_time=$(( RETRY_INTERVAL + jitter_val ))
[[ $sleep_time -lt 1 ]] && sleep_time=1
sleep "$sleep_time"
fi
done

会被封号吗?
@neo0000000 #1 这应该就是官方的api吧,和你界面上不停手动点应该差不多
赞👍
大佬牛
账号升级,根本不用抢
BD
不行了哥,一整天了还是没开出来。亚洲区还是太热门了。。。
速度太快容易封号吧
点赞