From 3566c20d379607be6fe9afcc351ab61970a66204 Mon Sep 17 00:00:00 2001 From: Hyy2001X <1804430051@qq.com> Date: Sat, 24 Jul 2021 14:37:09 +0800 Subject: [PATCH] =?UTF-8?q?V6.5.2=20=E6=B7=BB=E5=8A=A0=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E6=8F=90=E7=A4=BA;=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Scripts/AutoUpdate.sh | 81 +++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/Scripts/AutoUpdate.sh b/Scripts/AutoUpdate.sh index 6b7b1cf..4f584c6 100755 --- a/Scripts/AutoUpdate.sh +++ b/Scripts/AutoUpdate.sh @@ -3,7 +3,7 @@ # AutoUpdate for Openwrt # Depends on: bash wget-ssl/wget/uclient-fetch curl x86:gzip openssl -Version=V6.5.1 +Version=V6.5.2 ENV_DEPENDS="Author Github TARGET_PROFILE TARGET_BOARD TARGET_SUBTARGET Firmware_Type CURRENT_Version OP_Maintainer OP_BRANCH OP_REPO_NAME REGEX_Firmware" TITLE() { @@ -12,12 +12,10 @@ TITLE() { SHELL_HELP() { TITLE - echo -e "\n当前指令: ${Run_Command}" cat <] - $0 [-x] [path=] [url=] - * 可附加参数 +使用方法: bash $0 [-n] [-f] [-u] [-F] [-P] [path=] + bash $0 [-x] [path=] [url=] 更新固件: -n 不保留配置更新固件 * @@ -51,6 +49,8 @@ SHELL_HELP() { --var 打印用户指定的变量 --verbose 打印更详细的下载信息 --version < | cloud> 打印 <当前 | 云端> AutoUpdate.sh 版本 + +脚本、固件更新问题反馈请前往 ${Github}, 并附上 AutoUpdate 运行日志与系统信息 (见上方) EOF EXIT @@ -62,6 +62,7 @@ SHOW_VARIABLE() { 设备名称: $(uname -n) / ${TARGET_PROFILE} 固件版本: ${CURRENT_Version} +内核版本: $(uname -r) 其他参数: ${TARGET_BOARD} / ${TARGET_SUBTARGET} 固件作者: ${Author} 固件作者 URL: ${Github} @@ -116,7 +117,7 @@ CHECK_ENV() { } EXIT() { - LOGGER "Command :[${Run_Command}] Finished $1" + LOGGER "[${Run_Command}] Finished $1" exit } @@ -167,7 +168,7 @@ GET_SHA256SUM() { LOGGER "[GET_SHA256SUM] Target File: $1" local Result=$(sha256sum $1 | cut -c1-$2) [[ -n ${Result} ]] && echo "${Result}" - LOGGER "[GET_SHA256SUM] Calculated result: ${Result}" + LOGGER "[GET_SHA256SUM] $1: ${Result}" } GET_VARIABLE() { @@ -175,7 +176,7 @@ GET_VARIABLE() { [[ ! -f $2 ]] && ECHO "未检测到定义文件: [$2] !" && EXIT 1 local Result="$(grep "$1=" $2 | grep -v "#" | awk 'NR==1' | sed -r "s/$1=(.*)/\1/")" [[ -n ${Result} ]] && echo "${Result}" - LOGGER "[GET_VARIABLE] Get Variable: ${Result}" + LOGGER "[GET_VARIABLE] $1: ${Result}" } LOAD_VARIABLE() { @@ -188,7 +189,7 @@ LOAD_VARIABLE() { done [[ -z ${TARGET_PROFILE} ]] && TARGET_PROFILE="$(jsonfilter -e '@.model.id' < /etc/board.json | tr ',' '_')" [[ -z ${TARGET_PROFILE} ]] && ECHO r "获取设备名称失败,无法执行更新!" && EXIT 1 - [[ -z ${CURRENT_Version} ]] && CURRENT_Version=未知 + [[ -z ${CURRENT_Version} ]] && CURRENT_Version="未知" Github_Release_URL="${Github}/releases/download/AutoUpdate" FW_Author="${Github##*com/}" Github_API="https://api.github.com/repos/${FW_Author}/releases/latest" @@ -272,24 +273,22 @@ CHANGE_BOOT() { } UPDATE_SCRIPT() { - [[ $# != 2 ]] && SHELL_HELP ECHO g "下载地址: $2" ECHO g "保存路径: $1" [[ -f $1 ]] && { ECHO r "AutoUpdate 脚本保存路径有误,请重新输入!" EXIT 1 } - ECHO "开始更新 AutoUpdate 脚本,请耐心等待..." + ECHO "开始更新 AutoUpdate 脚本,请耐心等待 ..." [[ ! -d $1 ]] && mkdir -p $1 - ${Downloader} /tmp/AutoUpdate.sh $2 - if [[ $? == 0 && -s /tmp/AutoUpdate.sh ]];then + DOWNLOADER /tmp/AutoUpdate.sh $2 + if [[ $? == 0 ]];then mv -f /tmp/AutoUpdate.sh $1 - [[ ! $? == 0 ]] && ECHO r "AutoUpdate 脚本更新失败!" && EXIT 1 chmod +x $1/AutoUpdate.sh - NEW_Version=$(egrep -o "V[0-9].+" $1/AutoUpdate.sh | awk 'END{print}') + Script_Version=$(bash $1/AutoUpdate.sh --version) Banner_Version=$(egrep -o "V[0-9]+.[0-9].+" /etc/banner) - [[ -n ${Banner_Version} ]] && sed -i "s?${Banner_Version}?${NEW_Version}?g" /etc/banner - ECHO y "[${Version}] > [${NEW_Version}] AutoUpdate 脚本更新成功!" + [[ -n ${Banner_Version} && $1 == /bin ]] && sed -i "s?${Banner_Version}?${Script_Version}?g" /etc/banner + ECHO y "[${Script_Version}] AutoUpdate 脚本更新成功!" EXIT 0 else ECHO r "AutoUpdate 脚本更新失败,请检查网络后重试!" @@ -299,7 +298,7 @@ UPDATE_SCRIPT() { CHECK_DEPENDS() { TITLE - local PKG + local PKG Tab echo -e "\n软件包 检测结果" while [[ $1 ]];do if [[ $1 =~ : ]];then @@ -346,7 +345,7 @@ GET_FW_LOG() { esac if [[ -z $(find ${Run_Path} -type f -mmin -1 -name Update_Logs.json) || ! -s ${Run_Path}/Update_Logs.json ]];then rm -f ${Run_Path}/Update_Logs.json - ${Downloader} ${Run_Path}/Update_Logs.json ${Release_URL}/Update_Logs.json + DOWNLOADER ${Run_Path}/Update_Logs.json ${Release_URL}/Update_Logs.json [[ $? == 0 || -s ${Run_Path}/Update_Logs.json ]] && { touch -a ${Run_Path}/Update_Logs.json } || rm -f ${Run_Path}/Update_Logs.json @@ -363,7 +362,7 @@ GET_FW_LOG() { GET_CLOUD_INFO() { if [[ -z $(find ${Run_Path} -type f -mmin -1 -name Github_Tags) || ! -s ${Run_Path}/Github_Tags ]];then [[ -f ${Run_Path}/Github_Tags ]] && rm -f ${Run_Path}/Github_Tags - ${Downloader} ${Run_Path}/Github_Tags ${Github_API} + DOWNLOADER ${Run_Path}/Github_Tags ${Github_API} [[ $? != 0 || ! -s ${Run_Path}/Github_Tags ]] && echo "false" || { touch -a ${Run_Path}/Github_Tags echo "true" @@ -418,6 +417,18 @@ CHECK_UPDATES() { } } +DOWNLOADER() { + LOGGER "[DOWNLOADER] ${Downloader} $1 $2" + ${Downloader} $1 $2 + [[ $? == 0 ]] && { + LOGGER "[DOWNLOADER] returned 0" + return 0 + } || { + LOGGER "[DOWNLOADER] returned $?" + return $? + } +} + PREPARE_UPGRADES() { TITLE [[ $* =~ -f && $* =~ -F ]] && SHELL_HELP @@ -473,6 +484,12 @@ PREPARE_UPGRADES() { LOGGER "Upgrade Options: ${Upgrade_Option}" [[ -n "${Special_Commands}" ]] && ECHO g "特殊指令:${Special_Commands} / ${Upgrade_Option}" ECHO g "执行: ${MSG}${Special_MSG}" + CLOUD_FW_Version=$(GET_CLOUD_VERSION) + CLOUD_FW_Name=$(GET_CLOUD_FW) + [[ -z ${CLOUD_FW_Version} || -z ${CLOUD_FW_Name} ]] && { + ECHO r "云端固件信息获取失败,请检查网络后重试!" + EXIT 1 + } if [[ $(CHECK_PKG curl) == true && ${Proxy_Mode} != 1 ]];then Google_Check=$(curl -I -s --connect-timeout 3 google.com -w %{http_code} | tail -n1) LOGGER "Google_Check: ${Google_Check}" @@ -481,20 +498,14 @@ PREPARE_UPGRADES() { Proxy_Mode=1 } fi - CLOUD_FW_Version=$(GET_CLOUD_VERSION) - CLOUD_FW_Name=$(GET_CLOUD_FW) - [[ -z ${CLOUD_FW_Version} || -z ${CLOUD_FW_Name} ]] && { - ECHO r "检查更新失败,请检查网络后重试!" - EXIT 1 - } CHECK_UPDATES [[ ${Proxy_Mode} == 1 ]] && { CLOUD_FW_URL="${Release_Goproxy_URL}" } || CLOUD_FW_URL="${Release_URL}" cat <