diff --git a/nx30pro_upgrade.sh b/nx30pro_upgrade.sh deleted file mode 100644 index 9acf1a5..0000000 --- a/nx30pro_upgrade.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash -# NX30Pro 一键升级脚本 -# 固件来源: https://git.stickrouter.com/mike/N30pro/raw/branch/main/nx30pro512.bin -# 目标路由器: 192.168.6.66 - -ROUTER_IP="192.168.6.66" -ROUTER_USER="root" -FIRMWARE_URL="https://git.stickrouter.com/mike/N30pro/raw/branch/main/nx30pro512.bin" -FIRMWARE_NAME="nx30pro512.bin" -REMOTE_PATH="/tmp/${FIRMWARE_NAME}" - -R="\033[91m"; G="\033[92m"; Y="\033[93m"; C="\033[96m"; W="\033[0m" - -log() { echo -e "${G}[INFO] $1${W}"; } -warn() { echo -e "${Y}[WARN] $1${W}"; } -err() { echo -e "${R}[ERR] $1${W}"; exit 1; } -step() { echo -e "\n${C}${'='*50}\n $1\n${'='*50}${W}"; } - -echo -e "${C}" -echo "==================================================" -echo " NX30Pro 一键升级脚本" -echo " 目标路由器: ${ROUTER_IP}" -echo " 固件来源: Gitea" -echo "==================================================" -echo -e "${W}" - -# 检查 ssh/scp 是否可用 -for cmd in ssh scp wget curl; do - command -v $cmd &>/dev/null || err "缺少依赖: $cmd,请先安装" -done - -# 检查路由器是否可达 -echo -e "\n${C}[步骤 1/4] 检查路由器连接${W}" -ping -c 1 -W 3 ${ROUTER_IP} &>/dev/null || err "无法连接到路由器 ${ROUTER_IP},请检查网络" -log "路由器 ${ROUTER_IP} 可达" - -# 下载固件到本地 /tmp -echo -e "\n${C}[步骤 2/4] 下载固件${W}" -LOCAL_FW="/tmp/${FIRMWARE_NAME}" -if [ -f "${LOCAL_FW}" ]; then - warn "本地已存在固件文件,跳过下载" -else - log "从 Gitea 下载固件..." - wget -q --show-progress "${FIRMWARE_URL}" -O "${LOCAL_FW}" || \ - curl -L --progress-bar "${FIRMWARE_URL}" -o "${LOCAL_FW}" || \ - err "固件下载失败" -fi -log "固件大小: $(du -h ${LOCAL_FW} | cut -f1)" - -# 上传固件到路由器 /tmp -echo -e "\n${C}[步骤 3/4] 上传固件到路由器${W}" -log "正在上传到 ${ROUTER_IP}:${REMOTE_PATH}..." -scp -o StrictHostKeyChecking=no \ - -o UserKnownHostsFile=/dev/null \ - -o ConnectTimeout=10 \ - "${LOCAL_FW}" "${ROUTER_USER}@${ROUTER_IP}:${REMOTE_PATH}" || err "上传失败" -log "上传完成" - -# 验证文件大小 -REMOTE_SIZE=$(ssh -o StrictHostKeyChecking=no \ - -o UserKnownHostsFile=/dev/null \ - "${ROUTER_USER}@${ROUTER_IP}" \ - "wc -c < ${REMOTE_PATH} 2>/dev/null") -LOCAL_SIZE=$(wc -c < "${LOCAL_FW}") - -if [ "${REMOTE_SIZE}" != "${LOCAL_SIZE}" ]; then - err "文件大小不一致,上传可能失败 (本地: ${LOCAL_SIZE}, 远程: ${REMOTE_SIZE})" -fi -log "文件校验通过 (大小: ${LOCAL_SIZE} bytes)" - -# 执行升级 -echo -e "\n${C}[步骤 4/4] 执行固件升级${W}" -warn "升级过程中请勿断电!路由器将自动重启..." -warn "升级完成后请访问 http://192.168.6.66 登录管理界面" -echo "" -read -p "确认升级? (y/N): " confirm -if [[ "${confirm}" != "y" && "${confirm}" != "Y" ]]; then - warn "已取消升级" - exit 0 -fi - -log "开始升级..." -ssh -o StrictHostKeyChecking=no \ - -o UserKnownHostsFile=/dev/null \ - "${ROUTER_USER}@${ROUTER_IP}" \ - "sysupgrade -F -n ${REMOTE_PATH}" & - -echo "" -log "升级命令已发送,路由器正在重启..." -log "等待路由器重启完成 (约60秒)..." -sleep 60 - -# 检查路由器是否重启完成 -for i in {1..10}; do - if ping -c 1 -W 3 ${ROUTER_IP} &>/dev/null; then - echo "" - echo -e "${G}==================================================" - echo " ✅ 升级完成!" - echo " 请访问 http://${ROUTER_IP} 登录管理界面" - echo -e "==================================================${W}" - exit 0 - fi - log "等待路由器上线... ($i/10)" - sleep 10 -done - -warn "路由器未能在预期时间内上线,请手动检查"