V6.6.9 修复固件版本号截取; 优化代码
This commit is contained in:
parent
1a9120b550
commit
fc9f4e0b00
|
|
@ -3,7 +3,7 @@
|
||||||
# AutoUpdate for Openwrt
|
# AutoUpdate for Openwrt
|
||||||
# Dependences: bash wget-ssl/wget/uclient-fetch curl openssl jsonfilter
|
# Dependences: bash wget-ssl/wget/uclient-fetch curl openssl jsonfilter
|
||||||
|
|
||||||
Version=V6.6.8
|
Version=V6.6.9
|
||||||
|
|
||||||
function TITLE() {
|
function TITLE() {
|
||||||
clear && echo "Openwrt-AutoUpdate Script by Hyy2001 ${Version}"
|
clear && echo "Openwrt-AutoUpdate Script by Hyy2001 ${Version}"
|
||||||
|
|
@ -85,13 +85,14 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function RM() {
|
function RM() {
|
||||||
rm -f $1 2> /dev/null
|
[[ -z $* ]] && return 1
|
||||||
[[ $? == 0 ]] && LOGGER "已删除文件: [$1]" || LOGGER "[$1] 删除失败!"
|
rm -rf "$*" 2> /dev/null
|
||||||
|
LOGGER "已删除文件: [$1]"
|
||||||
}
|
}
|
||||||
|
|
||||||
function LIST_ENV() {
|
function LIST_ENV() {
|
||||||
local X
|
local X
|
||||||
cat /etc/AutoBuild/*_Variable | grep -v '#' | while read X;do
|
grep -v '#' /etc/AutoBuild/*_Variable | while read X;do
|
||||||
[[ ${X} =~ "=" ]] && {
|
[[ ${X} =~ "=" ]] && {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
1 | 2)
|
1 | 2)
|
||||||
|
|
@ -107,7 +108,7 @@ function LIST_ENV() {
|
||||||
|
|
||||||
function CHECK_ENV() {
|
function CHECK_ENV() {
|
||||||
while [[ $1 ]];do
|
while [[ $1 ]];do
|
||||||
[[ $(LIST_ENV 1) =~ $1 ]] && LOGGER "[CHECK_ENV] Checking env $1 ... true" || ECHO r "[CHECK_ENV] Checking env $1 ... false"
|
[[ $(LIST_ENV 1) =~ $1 ]] && LOGGER "[CHECK_ENV] 检查变量 $1 ... true" || ECHO r "[CHECK_ENV] 检查变量 $1 ... false"
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
@ -185,7 +186,6 @@ function GET_SHA256SUM() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function GET_VARIABLE() {
|
function GET_VARIABLE() {
|
||||||
[[ $# != 2 ]] && SHELL_HELP
|
|
||||||
[[ ! -f $2 ]] && ECHO "[GET_VARIABLE] 未检测到环境变量文件: [$2] !" && EXIT 1
|
[[ ! -f $2 ]] && ECHO "[GET_VARIABLE] 未检测到环境变量文件: [$2] !" && EXIT 1
|
||||||
local Result="$(grep "$1=" $2 | grep -v "#" | awk 'NR==1' | sed -r "s/$1=(.*)/\1/")"
|
local Result="$(grep "$1=" $2 | grep -v "#" | awk 'NR==1' | sed -r "s/$1=(.*)/\1/")"
|
||||||
[[ -n ${Result} ]] && {
|
[[ -n ${Result} ]] && {
|
||||||
|
|
@ -233,10 +233,9 @@ function LOAD_VARIABLE() {
|
||||||
function EDIT_VARIABLE() {
|
function EDIT_VARIABLE() {
|
||||||
local Mode="$1"
|
local Mode="$1"
|
||||||
shift
|
shift
|
||||||
[[ ! -f $1 ]] && ECHO r "未检测到环境变量文件: [$1] !" && EXIT 1
|
[[ ! -f $1 ]] && ECHO r "未检测到环境变量文件: [$1] !" && return 1
|
||||||
case "${Mode}" in
|
case "${Mode}" in
|
||||||
edit)
|
edit)
|
||||||
[[ $# != 3 ]] && SHELL_HELP
|
|
||||||
[[ -z $(GET_VARIABLE $2 $1) ]] && {
|
[[ -z $(GET_VARIABLE $2 $1) ]] && {
|
||||||
LOGGER "[EDIT_VARIABLE] 新增环境变量 [$2=$3]"
|
LOGGER "[EDIT_VARIABLE] 新增环境变量 [$2=$3]"
|
||||||
echo -e "\n$2=$3" >> $1
|
echo -e "\n$2=$3" >> $1
|
||||||
|
|
@ -245,7 +244,6 @@ function EDIT_VARIABLE() {
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
rm)
|
rm)
|
||||||
[[ $# != 2 ]] && SHELL_HELP
|
|
||||||
LOGGER "[EDIT_VARIABLE] 从 $1 删除环境变量 [$2] ..."
|
LOGGER "[EDIT_VARIABLE] 从 $1 删除环境变量 [$2] ..."
|
||||||
sed -i "/$2/d" $1
|
sed -i "/$2/d" $1
|
||||||
;;
|
;;
|
||||||
|
|
@ -316,19 +314,18 @@ function UPDATE_SCRIPT() {
|
||||||
|
|
||||||
function CHECK_DEPENDS() {
|
function CHECK_DEPENDS() {
|
||||||
TITLE
|
TITLE
|
||||||
local PKG Tab
|
local PKG
|
||||||
echo -e "\n软件包 检测结果"
|
printf "\n%-28s %-5s\n" 软件包 检测结果
|
||||||
while [[ $1 ]];do
|
while [[ $1 ]];do
|
||||||
if [[ $1 =~ : ]];then
|
if [[ $1 =~ : ]];then
|
||||||
[[ $(echo $1 | cut -d ":" -f1) == ${TARGET_BOARD} ]] && {
|
[[ $(echo $1 | cut -d ":" -f1) == ${TARGET_BOARD} ]] && {
|
||||||
PKG="$(echo "$1" | cut -d ":" -f2)"
|
PKG="$(echo "$1" | cut -d ":" -f2)"
|
||||||
[[ $(echo "${PKG}" | wc -c) -gt 8 ]] && Tab=" " || Tab=" "
|
[[ $(echo "${PKG}" | wc -c) -gt 8 ]] && Tab=" " || Tab=" "
|
||||||
echo -e "${PKG}${Tab}$(CHECK_PKG ${PKG})"
|
printf "%-25s %-5s\n" ${PKG} $(CHECK_PKG ${PKG})
|
||||||
LOGGER "[CHECK_DEPENDS] 检查软件包: [${PKG}] ... $(CHECK_PKG ${PKG})"
|
LOGGER "[CHECK_DEPENDS] 检查软件包: [${PKG}] ... $(CHECK_PKG ${PKG})"
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
[[ $(echo "$1" | wc -c) -gt 8 ]] && Tab=" " || Tab=" "
|
printf "%-25s %-5s\n" $1 $(CHECK_PKG $1)
|
||||||
echo -e "$1${Tab}$(CHECK_PKG $1)"
|
|
||||||
LOGGER "[CHECK_DEPENDS] 检查软件包: [$1] ... $(CHECK_PKG $1)"
|
LOGGER "[CHECK_DEPENDS] 检查软件包: [$1] ... $(CHECK_PKG $1)"
|
||||||
fi
|
fi
|
||||||
shift
|
shift
|
||||||
|
|
@ -336,17 +333,6 @@ function CHECK_DEPENDS() {
|
||||||
ECHO y "AutoUpdate 依赖检测结束,请尝试手动安装测结果为 [false] 的项目!"
|
ECHO y "AutoUpdate 依赖检测结束,请尝试手动安装测结果为 [false] 的项目!"
|
||||||
}
|
}
|
||||||
|
|
||||||
function CHECK_VERSION() {
|
|
||||||
[[ $# -gt 1 ]] && echo false && return
|
|
||||||
[[ $1 =~ R[1-9.]{2}.+-[0-9]{8} ]] && {
|
|
||||||
echo true
|
|
||||||
LOGGER "[CHECK_VERSION] 检查固件版本号: [$1] ... true"
|
|
||||||
} || {
|
|
||||||
echo false
|
|
||||||
LOGGER "[CHECK_VERSION] 检查固件版本号: [$1] ... false"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function CHECK_TIME() {
|
function CHECK_TIME() {
|
||||||
[[ -s $1 && -n $(find $1 -type f -mmin -$2) ]] && {
|
[[ -s $1 && -n $(find $1 -type f -mmin -$2) ]] && {
|
||||||
LOGGER "[CHECK_TIME] 文件: [$1] 距离修改时间小于 $2 分钟!"
|
LOGGER "[CHECK_TIME] 文件: [$1] 距离修改时间小于 $2 分钟!"
|
||||||
|
|
@ -358,7 +344,7 @@ function CHECK_TIME() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ANALYSIS_API() {
|
function ANALYZE_API() {
|
||||||
local url name date size version count sha256
|
local url name date size version count sha256
|
||||||
local API_Cache=${Tmp_Path}/API_Cache
|
local API_Cache=${Tmp_Path}/API_Cache
|
||||||
[[ $(CHECK_TIME ${API_File} 1) == false ]] && {
|
[[ $(CHECK_TIME ${API_File} 1) == false ]] && {
|
||||||
|
|
@ -368,29 +354,33 @@ function ANALYSIS_API() {
|
||||||
EXIT 2
|
EXIT 2
|
||||||
}
|
}
|
||||||
RM ${API_File} && touch -a ${API_File}
|
RM ${API_File} && touch -a ${API_File}
|
||||||
LOGGER "[ANALYSIS_API] 开始解析 Github API ..."
|
LOGGER "[ANALYZE_API] 开始解析 Github API ..."
|
||||||
for i in $(seq 0 500);do
|
for i in $(seq 0 500);do
|
||||||
name=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].name' 2> /dev/null)
|
name=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].name' 2> /dev/null)
|
||||||
[[ ! $? == 0 ]] && break
|
[[ ! $? == 0 ]] && break
|
||||||
if [[ ${name} =~ "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" || ${name} =~ Update_Logs.json ]]
|
if [[ ${name} =~ "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" || ${name} =~ Update_Logs.json ]]
|
||||||
then
|
then
|
||||||
version=$(echo ${name} | egrep -o "R[0-9].+-[0-9]{8}")
|
version=$(echo ${name} | egrep -o "R[0-9.]+-[0-9]+")
|
||||||
url=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].browser_download_url' 2> /dev/null)
|
url=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].browser_download_url' 2> /dev/null)
|
||||||
size=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].size' 2> /dev/null | awk '{a=$1/1048576} {printf("%.2f\n",a)}')
|
size=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].size' 2> /dev/null | awk '{a=$1/1048576} {printf("%.2f\n",a)}')
|
||||||
date=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].updated_at' 2> /dev/null | sed 's/[-:TZ]//g')
|
date=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].updated_at' 2> /dev/null | sed 's/[-:TZ]//g')
|
||||||
count=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].download_count' 2> /dev/null)
|
count=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].download_count' 2> /dev/null)
|
||||||
sha256=$(echo ${name} | egrep -o "\-[a-z0-9]+" | cut -c2-6 | awk 'END{print}')
|
sha256=$(echo ${name} | egrep -o "\-[a-z0-9]+" | cut -c2-6 | awk 'END{print}')
|
||||||
|
[[ -z ${name} ]] && name="-"
|
||||||
|
[[ -z ${version} ]] && version="-"
|
||||||
|
[[ -z ${url} ]] && url="-"
|
||||||
|
[[ -z ${size} ]] && size="-"
|
||||||
|
[[ -z ${date} ]] && date="-"
|
||||||
|
[[ -z ${count} ]] && count="-"
|
||||||
|
[[ -z ${sha256} ]] && sha256="-"
|
||||||
printf "%-75s %-5s %-8s %-20s %-10s %-15s %s\n" ${name} ${count} ${sha256} ${version} ${date} ${size}MB ${url} >> ${API_File}
|
printf "%-75s %-5s %-8s %-20s %-10s %-15s %s\n" ${name} ${count} ${sha256} ${version} ${date} ${size}MB ${url} >> ${API_File}
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
unset i
|
unset i
|
||||||
}
|
}
|
||||||
awk -F ' ' '{print NF}' ${API_File} | while read X;do
|
|
||||||
[[ ${X} != 7 ]] && LOGGER "[ANALYSIS_API] API 解析异常: ${X}"
|
|
||||||
done
|
|
||||||
[[ -z $(cat ${API_File} 2> /dev/null) ]] && {
|
[[ -z $(cat ${API_File} 2> /dev/null) ]] && {
|
||||||
ECHO r "Github API 解析失败!"
|
ECHO r "Github API 解析内容为空!"
|
||||||
EXIT 2
|
return 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -398,14 +388,14 @@ function GET_CLOUD_LOG() {
|
||||||
local Result Version
|
local Result Version
|
||||||
[[ ! $(cat ${API_File} 2> /dev/null) =~ Update_Logs.json ]] && {
|
[[ ! $(cat ${API_File} 2> /dev/null) =~ Update_Logs.json ]] && {
|
||||||
LOGGER "[GET_CLOUD_LOG] 未检测到云端日志文件!"
|
LOGGER "[GET_CLOUD_LOG] 未检测到云端日志文件!"
|
||||||
return
|
return 1
|
||||||
}
|
}
|
||||||
case "$1" in
|
case "$1" in
|
||||||
[Ll]ocal)
|
[Ll]ocal)
|
||||||
Version="${CURRENT_Version}"
|
Version="${CURRENT_Version}"
|
||||||
;;
|
;;
|
||||||
[Cc]loud)
|
[Cc]loud)
|
||||||
Version="$(GET_CLOUD_INFO version)"
|
Version="$(GET_FW_INFO 4)"
|
||||||
;;
|
;;
|
||||||
-v)
|
-v)
|
||||||
shift
|
shift
|
||||||
|
|
@ -424,41 +414,36 @@ function GET_CLOUD_LOG() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function GET_CLOUD_INFO() {
|
function GET_FW_INFO() {
|
||||||
local Info
|
local Info Type Result
|
||||||
[[ ! -s ${API_File} ]] && {
|
[[ ! -s ${API_File} ]] && {
|
||||||
LOGGER "[GET_CLOUD_INFO] 未检测到 API 文件!"
|
LOGGER "[GET_FW_INFO] 未检测到 API 文件!"
|
||||||
return
|
return 1
|
||||||
}
|
}
|
||||||
if [[ $1 =~ (All|all|-a) ]];then
|
if [[ $1 == "-a" ]];then
|
||||||
Info=$(grep "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" ${API_File} | grep "${x86_Boot}" | uniq)
|
Info=$(grep "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" ${API_File} | grep "${x86_Boot}" | uniq)
|
||||||
shift
|
shift
|
||||||
else
|
else
|
||||||
Info=$(grep "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" ${API_File} | grep "${x86_Boot}" | awk 'BEGIN {MAX = 0} {if ($5+0 > MAX+0) {MAX=$5 ;content=$0} } END {print content}')
|
Info=$(grep "AutoBuild-${OP_REPO_NAME}-${TARGET_PROFILE}" ${API_File} | grep "${x86_Boot}" | awk 'BEGIN {MAX = 0} {if ($5+0 > MAX+0) {MAX=$5 ;content=$0} } END {print content}')
|
||||||
fi
|
fi
|
||||||
case "$1" in
|
Result=$(echo "${Info}" | awk '{print $"'${1}'"}' 2> /dev/null)
|
||||||
name)
|
case $1 in
|
||||||
echo "${Info}" | awk '{print $1}'
|
1) Type="固件名称";;
|
||||||
;;
|
2) Type="下载次数";;
|
||||||
count)
|
3) Type=" SHA256 ";;
|
||||||
echo "${Info}" | awk '{print $2}'
|
4) Type="固件版本";;
|
||||||
;;
|
5) Type="发布日期";;
|
||||||
sha256)
|
6) Type="固件体积";;
|
||||||
echo "${Info}" | awk '{print $3}'
|
7) Type="固件链接";;
|
||||||
;;
|
*) Type="未定义信息";;
|
||||||
version)
|
|
||||||
echo "${Info}" | awk '{print $4}'
|
|
||||||
;;
|
|
||||||
date)
|
|
||||||
echo "${Info}" | awk '{print $5}'
|
|
||||||
;;
|
|
||||||
size)
|
|
||||||
echo "${Info}" | awk '{print $6}'
|
|
||||||
;;
|
|
||||||
url)
|
|
||||||
echo "${Info}" | awk '{print $7}'
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
[[ ! ${Result} == "-" ]] && {
|
||||||
|
LOGGER "[GET_FW_INFO] 获取${Type}: ${Result}"
|
||||||
|
echo -e "${Result}"
|
||||||
|
} || {
|
||||||
|
LOGGER "[GET_FW_INFO] ${Type}获取失败!"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function UPGRADE() {
|
function UPGRADE() {
|
||||||
|
|
@ -548,13 +533,14 @@ function UPGRADE() {
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
ECHO "正在检查版本更新 ..."
|
ECHO "正在检查版本更新 ..."
|
||||||
ANALYSIS_API
|
ANALYZE_API
|
||||||
CLOUD_FW_Version=$(GET_CLOUD_INFO version)
|
CLOUD_FW_Name=$(GET_FW_INFO 1)
|
||||||
CLOUD_FW_Name=$(GET_CLOUD_INFO name)
|
CLOUD_FW_Count=$(GET_FW_INFO 2)
|
||||||
CLOUD_FW_Count=$(GET_CLOUD_INFO count)
|
CLOUD_FW_SHA256=$(GET_FW_INFO 3)
|
||||||
CLOUD_FW_Size=$(GET_CLOUD_INFO size)
|
CLOUD_FW_Version=$(GET_FW_INFO 4)
|
||||||
CLOUD_FW_Url=$(GET_CLOUD_INFO url)
|
CLOUD_FW_Date=$(GET_FW_INFO 5)
|
||||||
CLOUD_FW_SHA256=$(GET_CLOUD_INFO sha256)
|
CLOUD_FW_Size=$(GET_FW_INFO 6)
|
||||||
|
CLOUD_FW_Url=$(GET_FW_INFO 7)
|
||||||
[[ -z ${CLOUD_FW_Name} ]] && {
|
[[ -z ${CLOUD_FW_Name} ]] && {
|
||||||
ECHO r "云端固件信息获取失败!"
|
ECHO r "云端固件信息获取失败!"
|
||||||
EXIT 2
|
EXIT 2
|
||||||
|
|
@ -1012,16 +998,15 @@ function AutoUpdate_Main() {
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
--clean)
|
--clean)
|
||||||
shift && [[ -n $* ]] && SHELL_HELP
|
|
||||||
REMOVE_CACHE
|
REMOVE_CACHE
|
||||||
EXIT
|
EXIT
|
||||||
;;
|
;;
|
||||||
--check)
|
--check)
|
||||||
shift && [[ -n $* ]] && SHELL_HELP
|
shift
|
||||||
CHECK_DEPENDS bash uclient-fetch curl wget openssl jsonfilter
|
CHECK_DEPENDS bash uclient-fetch curl wget openssl jsonfilter
|
||||||
[[ $(NETWORK_CHECK 223.5.5.5 2) == false ]] && {
|
[[ $(NETWORK_CHECK 223.5.5.5 2) == false ]] && {
|
||||||
ECHO r "网络连接错误!"
|
ECHO r "基础网络连接错误!"
|
||||||
} || ECHO y "网络连接正常!"
|
} || ECHO y "基础网络连接正常!"
|
||||||
CHECK_ENV ${ENV_DEPENDS}
|
CHECK_ENV ${ENV_DEPENDS}
|
||||||
EXIT
|
EXIT
|
||||||
;;
|
;;
|
||||||
|
|
@ -1044,8 +1029,8 @@ function AutoUpdate_Main() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
[Cc]loud)
|
[Cc]loud)
|
||||||
shift
|
shift
|
||||||
ANALYSIS_API > /dev/null 2>&1
|
ANALYZE_API > /dev/null 2>&1
|
||||||
GET_CLOUD_INFO $* version
|
GET_FW_INFO $* 4
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
SHELL_HELP
|
SHELL_HELP
|
||||||
|
|
@ -1055,20 +1040,15 @@ function AutoUpdate_Main() {
|
||||||
;;
|
;;
|
||||||
--fw-log)
|
--fw-log)
|
||||||
shift
|
shift
|
||||||
ANALYSIS_API
|
ANALYZE_API
|
||||||
[[ -z $* ]] && GET_CLOUD_LOG local
|
[[ -z $* ]] && GET_CLOUD_LOG local
|
||||||
case "$1" in
|
case "$1" in
|
||||||
[Cc]loud)
|
[Cc]loud)
|
||||||
GET_CLOUD_LOG $1
|
GET_CLOUD_LOG $1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
[[ -z $* ]] && EXIT 0
|
[[ -z $* ]] && EXIT
|
||||||
[[ ! $(CHECK_VERSION $1) == true ]] && {
|
GET_CLOUD_LOG -v $1
|
||||||
ECHO r "固件版本号合法性检查失败!"
|
|
||||||
EXIT 1
|
|
||||||
} || {
|
|
||||||
GET_CLOUD_LOG -v $1
|
|
||||||
}
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
EXIT
|
EXIT
|
||||||
|
|
@ -1134,8 +1114,8 @@ function AutoUpdate_Main() {
|
||||||
EXIT
|
EXIT
|
||||||
;;
|
;;
|
||||||
-O)
|
-O)
|
||||||
ANALYSIS_API
|
ANALYZE_API
|
||||||
GET_CLOUD_INFO -a name
|
GET_FW_INFO -a 1
|
||||||
EXIT
|
EXIT
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue