AC2100/upgrade.sh

68 lines
1.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# ImmortalWrt 软路由一键升级脚本
# 用法: curl -fsSL <此脚本的raw地址> -o /tmp/upgrade.sh && sh /tmp/upgrade.sh
FIRMWARE_URL="https://git.stickrouter.com/mike/AC2100/raw/branch/main/x86.img.gz"
FIRMWARE_FILE="/tmp/x86.img.gz"
echo "=========================================="
echo " ImmortalWrt 固件升级脚本"
echo "=========================================="
echo ""
echo "固件地址: $FIRMWARE_URL"
echo "下载路径: $FIRMWARE_FILE"
echo ""
echo "[1/4] 正在下载固件..."
rm -f "$FIRMWARE_FILE"
wget -c -O "$FIRMWARE_FILE" "$FIRMWARE_URL"
# 若首次下载中断,自动用续传方式重试,最多重试 3 次
RETRY=0
while [ $? -ne 0 ] && [ $RETRY -lt 3 ]; do
RETRY=$((RETRY+1))
echo "下载中断,正在进行第 $RETRY 次续传重试..."
sleep 3
wget -c -O "$FIRMWARE_FILE" "$FIRMWARE_URL"
done
if [ $? -ne 0 ]; then
echo ""
echo "!! 下载失败(已重试 3 次),请检查网络连接或固件地址是否正确"
exit 1
fi
echo ""
echo "[2/4] 下载完成,检查文件..."
if [ ! -s "$FIRMWARE_FILE" ]; then
echo "!! 文件为空或不存在,下载可能已损坏"
exit 1
fi
FILESIZE=$(ls -l "$FIRMWARE_FILE" | awk '{print $5}')
echo "文件大小: $FILESIZE 字节"
if [ "$FILESIZE" -lt 10000000 ]; then
echo "!! 文件大小异常偏小 (小于 10MB),可能下载不完整或链接返回了错误页面"
echo "!! 为安全起见,已中止刷机流程"
exit 1
fi
echo ""
echo "[3/4] 校验固件与设备兼容性..."
sysupgrade -T "$FIRMWARE_FILE"
if [ $? -ne 0 ]; then
echo "!! 固件校验未通过,已中止刷机"
echo "!! 如确认固件无误,可手动执行: sysupgrade -v $FIRMWARE_FILE"
exit 1
fi
echo ""
echo "[4/4] 校验通过5 秒后开始刷机..."
echo "!! 刷机过程中请勿断电,设备将自动重启"
sleep 5
sysupgrade -v "$FIRMWARE_FILE"