V6.4.5 同步 AutoBuild_Function.sh 改动

This commit is contained in:
Hyy2001X 2021-07-17 00:14:38 +08:00
parent 1295df0c0a
commit 2bfa03cf6c
1 changed files with 68 additions and 69 deletions

View File

@ -9,28 +9,29 @@ TITLE() {
SHELL_HELP() { SHELL_HELP() {
TITLE TITLE
echo -e "\n当前指令: ${Run_Command}"
cat <<EOF cat <<EOF
使用方法: $0 [<path=>] [-P] [-n] [-f] [-u] 使用方法: $0 [-n] [-f] [-u] [-F] [-P] [path=<Path>]
$0 [<更新脚本>] [-x/-x path=<>/-x url=<>] $0 [-x] [path=<Path>] [url=<URL>]
更新固件: 更新固件:
-n 更新固件 [不保留配置] -n 不保留配置更新固件 *
-f 跳过版本号验证,并强制刷写固件 [保留配置] -f 跳过版本号、SHA256验证,并强制刷写固件 (危险) *
-u 适用于定时更新 LUCI 的参数 [保留配置] -u 适用于定时更新 LUCI 的参数 *
-F 强制刷写固件 -F 强制刷写固件 *
--skip 跳过固件 SHA256 比对校验 (危险) -P 优先开启镜像加速下载固件 *
path=<Path> 更新固件 (保存固件到提供的绝对路径 <Path>) --skip 跳过云端固件 SHA256 校验 (危险) *
path=<Path> 保存固件到提供的绝对路径 <Path> *
更新脚本: 更新脚本:
-x 更新 AutoUpdate.sh 脚本 -x 更新 AutoUpdate.sh 脚本
-x path=<Path> 更新 AutoUpdate.sh 脚本 (保存脚本到提供的路径 <Path>) -x path=<Path> 更新 AutoUpdate.sh 脚本 (保存脚本到提供的绝对路径 <Path>) *
-x url=<URL> 更新 AutoUpdate.sh 脚本 (使用提供的地址 <URL> 更新脚本) -x url=<URL> 更新 AutoUpdate.sh 脚本 (使用提供的地址 <URL> 更新脚本) *
其他参数: 其他参数:
-P,--proxy 优先开启镜像加速
-C <Github URL> 更改 Github 地址为提供的 <Github URL> -C <Github URL> 更改 Github 地址为提供的 <Github URL>
-B <UEFI | Legacy> 指定 x86_64 设备下载 <UEFI | Legacy> 引导的固件 (危险) -B <UEFI | Legacy> 指定 x86 设备下载 <UEFI | Legacy> 引导的固件 (危险)
-V < | cloud> 打印 <当前 | 云端> AutoUpdate.sh 版本号 -V < | cloud> 打印 <当前 | 云端> AutoUpdate.sh 版本号
-E < | cloud | *> 打印 <当前 | 云端 | 指定版本> 版本的固件更新日志 -E < | cloud | *> 打印 <当前 | 云端 | 指定版本> 版本的固件更新日志
-H,--help 打印 AutoUpdate 帮助信息 -H,--help 打印 AutoUpdate 帮助信息
@ -57,23 +58,20 @@ SHOW_VARIABLE() {
设备名称: $(uname -n) / ${TARGET_PROFILE} 设备名称: $(uname -n) / ${TARGET_PROFILE}
固件版本: ${CURRENT_Version} 固件版本: ${CURRENT_Version}
其他参数: ${TARGET_BOARD} / ${TARGET_SUBTARGET}
固件作者: ${Author} 固件作者: ${Author}
软件架构: ${TARGET_SUBTARGET} 固件作者 URL: ${Github}
作者仓库: ${Github}
OpenWrt 源码: https://github.com/${Openwrt_Maintainer}/${OP_REPO_NAME}:${OP_BRANCH}
Release API: ${Github_API}
固件格式-框架: $(GET_VARIABLE AutoBuild_Firmware ${Default_Variable})
固件名称-框架: $(GET_VARIABLE Egrep_Firmware ${Default_Variable})
固件格式: ${Firmware_Type}
Release URL: ${Github_Release_URL} Release URL: ${Github_Release_URL}
FastGit URL: ${Release_FastGit_URL} Release API: ${Github_API}
Github Proxy URL: ${Release_Goproxy_URL} OpenWrt 源码 URL: https://github.com/${OP_Maintainer}/${OP_REPO_NAME}:${OP_BRANCH}
固件保存位置: ${AutoUpdate_Path} 固件匹配框架: $(GET_VARIABLE Egrep_Firmware ${Default_Variable})
运行日志: ${AutoUpdate_Log_Path}/AutoUpdate.log 固件格式: ${Firmware_Type}
固件保存路径: ${AutoUpdate_Path}
运行日志路径: ${AutoUpdate_Log_Path}/AutoUpdate.log
Downloader: ${Downloader} Downloader: ${Downloader}
EOF EOF
[[ ${TARGET_PROFILE} == x86_64 ]] && { [[ ${TARGET_BOARD} == x86 ]] && {
echo "x86_64 引导模式: ${x86_64_Boot}" echo "x86 固件引导模式: ${x86_Boot}"
} }
EXIT 0 EXIT 0
} }
@ -106,12 +104,12 @@ LIST_ENV() {
local X local X
cat /etc/AutoBuild/*_Variable | grep -v '#' | while read X;do cat /etc/AutoBuild/*_Variable | grep -v '#' | while read X;do
[[ ${X} =~ "=" ]] && { [[ ${X} =~ "=" ]] && {
case $1 in case "$1" in
1 | 2) 1 | 2)
[[ -n $(echo ${X} | cut -d "=" -f1) ]] && echo ${X} | cut -d "=" -f$1 [[ -n $(echo "${X}" | cut -d "=" -f1) ]] && echo "${X}" | cut -d "=" -f$1
;; ;;
0) 0)
echo ${X} echo "${X}"
;; ;;
esac esac
} }
@ -119,9 +117,8 @@ LIST_ENV() {
} }
EXIT() { EXIT() {
local RUN_TYPE
LOGGER "Command :[${Run_Command}] Finished $1" LOGGER "Command :[${Run_Command}] Finished $1"
exit 0 exit
} }
ECHO() { ECHO() {
@ -129,7 +126,7 @@ ECHO() {
[[ -z $1 ]] && { [[ -z $1 ]] && {
echo -ne "\n${Grey}[$(date "+%H:%M:%S")]${White} " echo -ne "\n${Grey}[$(date "+%H:%M:%S")]${White} "
} || { } || {
case $1 in case "$1" in
r) Color="${Red}";; r) Color="${Red}";;
g) Color="${Green}";; g) Color="${Green}";;
b) Color="${Blue}";; b) Color="${Blue}";;
@ -168,9 +165,10 @@ GET_SHA256SUM() {
ECHO r "未检测到文件: [$1] 或该文件为空,无法计算 SHA256 值!" ECHO r "未检测到文件: [$1] 或该文件为空,无法计算 SHA256 值!"
EXIT 1 EXIT 1
} }
LOGGER "[GET_SHA256SUM] Target File: $1"
local Result=$(sha256sum $1 | cut -c1-$2) local Result=$(sha256sum $1 | cut -c1-$2)
[[ -n ${Result} ]] && echo ${Result} [[ -n ${Result} ]] && echo ${Result}
LOGGER "[GET_SHA256SUM] File [$1] Calculated result: ${Result}" LOGGER "[GET_SHA256SUM] Calculated result: ${Result}"
} }
GET_VARIABLE() { GET_VARIABLE() {
@ -198,14 +196,14 @@ LOAD_VARIABLE() {
Release_URL="https://github.com/${FW_Author}/releases/download/AutoUpdate" Release_URL="https://github.com/${FW_Author}/releases/download/AutoUpdate"
Release_FastGit_URL="https://download.fastgit.org/${FW_Author}/releases/download/AutoUpdate" Release_FastGit_URL="https://download.fastgit.org/${FW_Author}/releases/download/AutoUpdate"
Release_Goproxy_URL="https://ghproxy.com/${Release_URL}" Release_Goproxy_URL="https://ghproxy.com/${Release_URL}"
case ${TARGET_PROFILE} in case "${TARGET_BOARD}" in
x86_64) x86)
case ${Firmware_Type} in case "${Firmware_Type}" in
img.gz | img) img.gz | img)
[[ -z ${x86_64_Boot} ]] && { [[ -z ${x86_Boot} ]] && {
[ -d /sys/firmware/efi ] && { [ -d /sys/firmware/efi ] && {
x86_64_Boot=UEFI x86_Boot=UEFI
} || x86_64_Boot=Legacy } || x86_Boot=Legacy
} }
;; ;;
*) *)
@ -265,7 +263,7 @@ CHANGE_BOOT() {
[[ -z $1 ]] && SHELL_HELP [[ -z $1 ]] && SHELL_HELP
case "$1" in case "$1" in
UEFI | Legacy) UEFI | Legacy)
EDIT_VARIABLE edit ${Custom_Variable} x86_64_Boot $1 EDIT_VARIABLE edit ${Custom_Variable} x86_Boot $1
echo "ON" > /force_dump echo "ON" > /force_dump
ECHO r "警告: 更换引导方式后更新固件后可能导致设备无法正常启动!" ECHO r "警告: 更换引导方式后更新固件后可能导致设备无法正常启动!"
ECHO y "固件引导格式已指定为: [$1],AutoUpdate 将在下一次更新时执行强制刷写固件!" ECHO y "固件引导格式已指定为: [$1],AutoUpdate 将在下一次更新时执行强制刷写固件!"
@ -330,10 +328,10 @@ CHECK_DEPENDS() {
GET_FW_LOG() { GET_FW_LOG() {
local Update_Log local Update_Log
case "$1" in case "$1" in
local) [Ll]ocal)
FW_Version="${CURRENT_Version}" FW_Version="${CURRENT_Version}"
;; ;;
cloud) [Cc]loud)
[[ -z ${CLOUD_Firmware_Version} ]] && GET_CLOUD_VERSION [[ -z ${CLOUD_Firmware_Version} ]] && GET_CLOUD_VERSION
FW_Version="${CLOUD_Firmware_Version}" FW_Version="${CLOUD_Firmware_Version}"
;; ;;
@ -346,11 +344,10 @@ GET_FW_LOG() {
[[ $? == 0 ]] && { [[ $? == 0 ]] && {
Update_Log=$(jsonfilter -e '@["'"""${TARGET_PROFILE}"""'"]["'"""${FW_Version}"""'"]' < ${AutoUpdate_Path}/Update_Logs.json) Update_Log=$(jsonfilter -e '@["'"""${TARGET_PROFILE}"""'"]["'"""${FW_Version}"""'"]' < ${AutoUpdate_Path}/Update_Logs.json)
rm -f ${AutoUpdate_Path}/Update_Logs.json rm -f ${AutoUpdate_Path}/Update_Logs.json
} || return
[[ -z ${Update_Log} ]] && return
echo -e "\n${Grey}${FW_Version} for ${TARGET_PROFILE} 更新日志:" echo -e "\n${Grey}${FW_Version} for ${TARGET_PROFILE} 更新日志:"
echo -e "\n${Green}${Update_Log}${White}" echo -e "\n${Green}${Update_Log}${White}"
} }
}
GET_CLOUD_INFO() { GET_CLOUD_INFO() {
[[ -f ${AutoUpdate_Path}/Github_Tags ]] && rm -f ${AutoUpdate_Path}/Github_Tags [[ -f ${AutoUpdate_Path}/Github_Tags ]] && rm -f ${AutoUpdate_Path}/Github_Tags
@ -404,7 +401,7 @@ PREPARE_UPGRADES() {
Test_Mode=1 Test_Mode=1
Special_Commands="${Special_Commands} [测试模式]" Special_Commands="${Special_Commands} [测试模式]"
;; ;;
-P | --proxy) -P)
Proxy_Mode=1 Proxy_Mode=1
Special_Commands="${Special_Commands} [镜像加速]" Special_Commands="${Special_Commands} [镜像加速]"
;; ;;
@ -438,7 +435,7 @@ PREPARE_UPGRADES() {
ECHO g "使用自定义固件保存路径: ${AutoUpdate_Path}" ECHO g "使用自定义固件保存路径: ${AutoUpdate_Path}"
;; ;;
--verbose) --verbose)
Special_Commands="${Special_Commands} [打印详细信息]" Special_Commands="${Special_Commands} [详细信息]"
;; ;;
*) *)
SHELL_HELP SHELL_HELP
@ -451,6 +448,7 @@ PREPARE_UPGRADES() {
REMOVE_CACHE quiet REMOVE_CACHE quiet
if [[ $(CHECK_PKG curl) == true && ${Proxy_Mode} != 1 ]];then if [[ $(CHECK_PKG curl) == true && ${Proxy_Mode} != 1 ]];then
Google_Check=$(curl -I -s --connect-timeout 3 google.com -w %{http_code} | tail -n1) Google_Check=$(curl -I -s --connect-timeout 3 google.com -w %{http_code} | tail -n1)
LOGGER "Google_Check: ${Google_Check}"
[[ ${Google_Check} != 301 ]] && { [[ ${Google_Check} != 301 ]] && {
ECHO r "Google 连接失败,优先使用镜像加速!" ECHO r "Google 连接失败,优先使用镜像加速!"
Proxy_Mode=1 Proxy_Mode=1
@ -468,7 +466,7 @@ PREPARE_UPGRADES() {
固件作者: ${FW_Author%/*} 固件作者: ${FW_Author%/*}
设备名称: $(uname -n) / ${TARGET_PROFILE} 设备名称: $(uname -n) / ${TARGET_PROFILE}
$([[ ${TARGET_PROFILE} == x86_64 ]] && echo "固件格式: ${Firmware_Type} / ${x86_64_Boot}" || echo "固件格式: ${Firmware_Type}") $([[ ${TARGET_BOARD} == x86 ]] && echo "固件格式: ${Firmware_Type} / ${x86_Boot}" || echo "固件格式: ${Firmware_Type}")
$(echo -e "当前固件版本: ${CURRENT_Version}${CURRENT_Type}") $(echo -e "当前固件版本: ${CURRENT_Version}${CURRENT_Type}")
$(echo -e "云端固件版本: ${CLOUD_Firmware_Version}${CLOUD_Type}") $(echo -e "云端固件版本: ${CLOUD_Firmware_Version}${CLOUD_Type}")
@ -510,13 +508,13 @@ EOF
Retry_Times=$((${Retry_Times} - 1)) Retry_Times=$((${Retry_Times} - 1))
ECHO r "固件下载失败,剩余尝试次数: ${Retry_Times}" ECHO r "固件下载失败,剩余尝试次数: ${Retry_Times}"
done done
if [[ ! ${Skip_SHA256} == 1 ]];then if [[ ! ${Skip_SHA256} == 1 || ! Force_Mode == 1 ]];then
CURRENT_SHA256=$(GET_SHA256SUM ${AutoUpdate_Path}/${FW_Name} 5) CURRENT_SHA256=$(GET_SHA256SUM ${AutoUpdate_Path}/${FW_Name} 5)
CLOUD_SHA256=$(echo ${FW_Name} | egrep -o "[0-9a-z]+.${Firmware_Type}" | sed -r "s/(.*).${Firmware_Type}/\1/") CLOUD_SHA256=$(echo ${FW_Name} | egrep -o "[0-9a-z]+.${Firmware_Type}" | sed -r "s/(.*).${Firmware_Type}/\1/")
[[ ${CURRENT_SHA256} != ${CLOUD_SHA256} ]] && { [[ ${CURRENT_SHA256} != ${CLOUD_SHA256} ]] && {
ECHO r "本地固件 SHA256 与云端比对校验失败 [${CURRENT_SHA256}],请检查网络后重试!" ECHO r "本地固件 SHA256 与云端比对校验失败 [${CURRENT_SHA256}],请检查网络后重试!"
EXIT 1 EXIT 1
} } || LOGGER "固件 SHA256 比对通过!"
fi fi
case "${Firmware_Type}" in case "${Firmware_Type}" in
img.gz) img.gz)
@ -547,7 +545,7 @@ DO_UPGRADE() {
ECHO g "正在更新固件,请耐心等待 ..." ECHO g "正在更新固件,请耐心等待 ..."
$* $*
[[ $? -ne 0 ]] && { [[ $? -ne 0 ]] && {
ECHO r "固件刷写失败,请尝试手动更新固件!" ECHO r "固件刷写失败,请尝试手动下载更新固件或附加 -F 参数强制刷写!"
EXIT 1 EXIT 1
} || EXIT 0 } || EXIT 0
} }
@ -575,7 +573,7 @@ AutoUpdate_LOG() {
} }
} || { } || {
while [[ $1 ]];do while [[ $1 ]];do
case $1 in case "$1" in
path=/* | rm | del) path=/* | rm | del)
: :
;; ;;
@ -628,7 +626,7 @@ AutoUpdate_Main() {
fi fi
[[ -z $* ]] && PREPARE_UPGRADES $* [[ -z $* ]] && PREPARE_UPGRADES $*
[[ $1 =~ path= && ! $* =~ -x && ! $* =~ -U ]] && PREPARE_UPGRADES $* [[ $1 =~ path=/ && ! $* =~ -x && ! $* =~ -U ]] && PREPARE_UPGRADES $*
[[ $1 =~ --skip ]] && PREPARE_UPGRADES $* [[ $1 =~ --skip ]] && PREPARE_UPGRADES $*
[[ $* =~ -T || $* =~ --verbose ]] && { [[ $* =~ -T || $* =~ --verbose ]] && {
Downloader="$(echo ${Downloader/ --quiet / })" Downloader="$(echo ${Downloader/ --quiet / })"
@ -637,7 +635,7 @@ AutoUpdate_Main() {
while [[ $1 ]];do while [[ $1 ]];do
case "$1" in case "$1" in
-n | -f | -u | -T | -P | --proxy | -F | --verbose) -n | -f | -u | -T | -P | -F | --verbose)
LOGGER "Downloader: ${DL} / ${Downloader}" LOGGER "Downloader: ${DL} / ${Downloader}"
PREPARE_UPGRADES $* PREPARE_UPGRADES $*
;; ;;
@ -675,7 +673,7 @@ AutoUpdate_Main() {
--env) --env)
shift shift
[[ -z $* ]] && LIST_ENV 0 && EXIT 0 [[ -z $* ]] && LIST_ENV 0 && EXIT 0
case $1 in case "$1" in
1 | 2) 1 | 2)
LIST_ENV $1 LIST_ENV $1
;; ;;
@ -718,7 +716,7 @@ AutoUpdate_Main() {
-x) -x)
shift shift
while [[ $1 ]];do while [[ $1 ]];do
case $1 in case "$1" in
url=* | path=/*) url=* | path=/*)
: :
;; ;;
@ -744,7 +742,7 @@ AutoUpdate_Main() {
;; ;;
-B) -B)
shift shift
[[ ${TARGET_PROFILE} != x86_64 ]] && SHELL_HELP [[ ${TARGET_BOARD} != x86 ]] && EXIT 1
CHANGE_BOOT $1 CHANGE_BOOT $1
;; ;;
-C) -C)
@ -753,21 +751,22 @@ AutoUpdate_Main() {
;; ;;
-E) -E)
shift shift
[[ -z $1 ]] && GET_FW_LOG local show && EXIT 0 [[ -z $* ]] && GET_FW_LOG local
case $1 in case "$1" in
cloud) [Cc]loud)
GET_FW_LOG $1 show GET_FW_LOG $1
;; ;;
*) *)
[[ ! $1 =~ R ]] && SHELL_HELP || GET_FW_LOG -v $1 show [[ -z $* ]] && EXIT 0
[[ ! $1 =~ R[0-9] ]] && SHELL_HELP || GET_FW_LOG -v $1
;; ;;
esac esac
EXIT EXIT
;; ;;
-H | --help) -H | --[Hh]elp)
SHELL_HELP SHELL_HELP
;; ;;
-L | --list) -L | --[Ll]ist)
shift && [[ -n $* ]] && SHELL_HELP shift && [[ -n $* ]] && SHELL_HELP
SHOW_VARIABLE SHOW_VARIABLE
;; ;;
@ -777,8 +776,8 @@ AutoUpdate_Main() {
echo ${CURRENT_Version} echo ${CURRENT_Version}
EXIT 0 EXIT 0
} }
case $1 in case "$1" in
cloud | Cloud) [Cc]loud)
GET_CLOUD_VERSION GET_CLOUD_VERSION
[[ -z ${CLOUD_Firmware_Version} ]] && echo "未知" || echo "${CLOUD_Firmware_Version}" [[ -z ${CLOUD_Firmware_Version} ]] && echo "未知" || echo "${CLOUD_Firmware_Version}"
;; ;;
@ -788,7 +787,7 @@ AutoUpdate_Main() {
-V) -V)
shift shift
case "$1" in case "$1" in
cloud) [Cc]loud)
Result="$(${Downloader} - ${AutoUpdate_Script_URL} | egrep -o "V[0-9].+")" Result="$(${Downloader} - ${AutoUpdate_Script_URL} | egrep -o "V[0-9].+")"
;; ;;
*) *)
@ -808,7 +807,7 @@ AutoUpdate_Main() {
done done
} }
Version=V6.4.4 Version=V6.4.5
AutoUpdate_Path=/tmp/AutoUpdate AutoUpdate_Path=/tmp/AutoUpdate
AutoUpdate_Log_Path=/tmp AutoUpdate_Log_Path=/tmp
AutoUpdate_Script_URL=https://ghproxy.com/https://raw.githubusercontent.com/Hyy2001X/AutoBuild-Actions/master/Scripts/AutoUpdate.sh AutoUpdate_Script_URL=https://ghproxy.com/https://raw.githubusercontent.com/Hyy2001X/AutoBuild-Actions/master/Scripts/AutoUpdate.sh