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