V6.7.6 添加可用内存&剩余空间检测

This commit is contained in:
Hyy2001X 2021-11-24 23:48:09 -06:00 committed by GitHub
parent 951c3b1a20
commit 9034af5d15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 76 additions and 22 deletions

View File

@ -3,7 +3,7 @@
# AutoUpdate for Openwrt
# Dependences: bash wget-ssl/wget/uclient-fetch curl openssl jsonfilter
Version=V6.7.5
Version=V6.7.6
function TITLE() {
clear && echo "Openwrt-AutoUpdate Script by Hyy2001 ${Version}"
@ -64,6 +64,7 @@ function SHOW_VARIABLE() {
设备名称: $(uname -n) / ${TARGET_PROFILE}
固件版本: ${OP_VERSION}
内核版本: $(uname -r)
运行内存: Mem: $(MEMINFO 1)M | Swap: $(MEMINFO 2)M | Total: $(MEMINFO 3)M
其他参数: ${TARGET_BOARD} / ${TARGET_SUBTARGET}
固件作者: ${Author}
作者仓库: ${Github}
@ -82,6 +83,47 @@ EOF
echo
}
function MEMINFO() {
local Mem Swap All Result
Mem=$(free | grep Mem: | awk '{Mem=$7/1024} {printf("%.0f\n",Mem)}' 2> /dev/null)
Swap=$(free | grep Swap: | awk '{Swap=$4/1024} {printf("%.0f\n",Swap)}' 2> /dev/null)
All=$(echo ${Mem} + ${Swap} | bc 2> /dev/null)
case $1 in
1)
Result=${Mem}
;;
2)
Result=${Swap}
;;
3)
Result=${All}
;;
esac
if [[ -n ${Result} ]]
then
LOGGER "[MEMINFO] [$1] 运行内存: ${Result}M"
echo ${Result}
return 0
else
return 1
fi
}
SPACEINFO() {
local Result Path
Path=$(echo $1 | awk -F '/' '{print $2}')
Result=$(df -m /${Path} 2> /dev/null | grep -v Filesystem | awk '{print $4}')
if [[ -n ${Result} ]]
then
LOGGER "[SPACEINFO] /${Path} 可用空间: ${Result}M"
echo "${Result}"
return 0
else
LOGGER "[SPACEINFO] /${Path} 可用空间获取失败!"
return 1
fi
}
function RM() {
[[ -z $* ]] && return 1
rm -rf "$*" 2> /dev/null
@ -370,11 +412,9 @@ function CHECK_DEPENDS() {
function CHECK_TIME() {
[[ -s $1 && -n $(find $1 -type f -mmin -$2) ]] && {
LOGGER "[CHECK_TIME] 文件: [$1] 距离修改时间小于 $2 分钟!"
echo true
return 0
} || {
LOGGER "[CHECK_TIME] 文件: [$1] 验证失败!"
RM $1
echo false
return 1
@ -391,7 +431,7 @@ function ANALYZE_API() {
EXIT 2
}
RM ${API_File} && touch -a ${API_File}
LOGGER "[ANALYZE_API] 开始解析 Github API ..."
LOGGER "开始解析 Github API ..."
for i in $(seq 0 500);do
name=$(jsonfilter -i ${API_Cache} -e '@["assets"]' | jsonfilter -e '@['""$i""'].name' 2> /dev/null)
[[ ! $? == 0 ]] && break
@ -418,15 +458,15 @@ function ANALYZE_API() {
unset i
fi
[[ ! -s ${API_File} ]] && {
ECHO r "Github API 解析内容为空!"
ECHO r "Github API 解析内容为空,请稍候再试!"
return 1
}
} || return 0
}
function GET_CLOUD_LOG() {
local Result Version
[[ ! $(cat ${API_File} 2> /dev/null) =~ Update_Logs.json ]] && {
LOGGER "[GET_CLOUD_LOG] 未检测到已部署的云端日志!"
LOGGER "未检测到已部署的云端日志!"
return 1
}
case "$1" in
@ -470,7 +510,7 @@ function GET_FW_INFO() {
1) Type="固件名称";;
2) Type="固件格式";;
3) Type="下载次数";;
4) Type=" SHA256 ";;
4) Type="校验信息";;
5) Type="固件版本";;
6) Type="发布日期";;
7) Type="固件体积";;
@ -478,7 +518,7 @@ function GET_FW_INFO() {
*) Type="未定义信息";;
esac
[[ ! ${Result} == "-" ]] && {
LOGGER "[GET_FW_INFO] 获取${Type}: ${Result}"
LOGGER "获取${Type}: ${Result}"
echo -e "${Result}"
} || {
LOGGER "[GET_FW_INFO] ${Type}获取失败!"
@ -541,7 +581,7 @@ function UPGRADE() {
;;
--path)
Firmware_Path="$2"
ECHO g "使用自定义固件保存路径: [${Firmware_Path}]"
ECHO g "固件保存路径: [${Firmware_Path} | $(SPACEINFO ${Firmware_Path})M]"
shift
;;
--skip-verify)
@ -609,16 +649,26 @@ $(echo -e "云端固件版本: ${CLOUD_FW_Version}${CHECKED_Type}")
云端固件体积: ${CLOUD_FW_Size}
固件下载次数: ${CLOUD_FW_Count}
EOF
LOGGER "当前版本: ${OP_VERSION}"
LOGGER "云端版本: ${CLOUD_FW_Version}"
LOGGER "云端固件名称: ${CLOUD_FW_Name}"
LOGGER "云端固件体积: ${CLOUD_FW_Size}"
LOGGER "固件下载人数: ${CLOUD_FW_Count}"
if [[ ${Force_Mode} != 1 ]]
then
if [[ $(MEMINFO 3) -lt $(echo ${CLOUD_FW_Size} | awk -F '.' '{print $1}') ]]
then
ECHO r "内存空间不足 [${CLOUD_FW_Size}],请尝试设置 Swap 交换分区或重启设备后再试!"
EXIT
fi
if [[ $(SPACEINFO ${Firmware_Path}) -lt $(echo ${CLOUD_FW_Size} | awk -F '.' '{print $1}') ]]
then
ECHO r "设备空间不足 [${CLOUD_FW_Size}],请尝试更换固件保存路径后再试!"
EXIT
fi
else
LOGGER "[Force Mode] 跳过可用资源测试"
fi
GET_CLOUD_LOG -v ${CLOUD_FW_Version}
case "${Upgrade_Stopped}" in
1 | 2)
[[ ${AutoUpdate_Mode} == 1 ]] && ECHO y "当前固件已是最新版本,无需更新!" && EXIT 0
[[ ${Upgrade_Stopped} == 1 ]] && err_MSG="当前固件已是最新版本" || err_MSG="云端固件版本为旧版"
[[ ${AutoUpdate_Mode} == 1 ]] && ECHO y "当前固件 [${OP_VERSION}] 已是最新版本,无需更新!" && EXIT 0
[[ ${Upgrade_Stopped} == 1 ]] && err_MSG="当前固件 [${OP_VERSION}] 已是最新版本" || err_MSG="云端固件版本为旧版"
[[ ! ${Force_Mode} == 1 ]] && {
ECHO && read -p "${err_MSG},是否继续更新固件?[Y/n]:" Choose
} || Choose=Y
@ -679,14 +729,19 @@ EOF
}
function DO_UPGRADE() {
ECHO r "警告: 固件更新期间请不要断开电源或重启设备!"
ECHO r "警告: 固件更新期间请不要断开电源或进行其他操作!"
sleep 3
ECHO g "正在更新固件,请耐心等待 ..."
$*
[[ $? -ne 0 ]] && {
ECHO r "固件刷入失败,请尝试使用 [autoupdate -F] 指令更新固件!"
if [[ $? != 0 ]]
then
ECHO r "固件更新失败,请尝试使用 [autoupdate -F] 指令更新固件!"
EXIT 1
}
else
ECHO y "固件更新成功,即将重启设备 ..."
sleep 3
reboot
fi
EXIT
}
@ -910,7 +965,6 @@ function LOG() {
URL_X() {
# URL_X https://raw.githubusercontent.com/Hyy2001X/AutoBuild-Actions/master/Scripts/AutoUpdate.sh F@@1 G@@1 X@@1
# Support for Github URL
local URL=$1 Type URL_Final
[[ ${URL} =~ raw.githubusercontent.com ]] && Type=raw
[[ ${URL} =~ releases/download ]] && Type=release