V1.4 优化代码

This commit is contained in:
Hyy2001X 2021-06-19 23:58:51 +08:00
parent 74a4fb3374
commit b9d69788fd
1 changed files with 128 additions and 120 deletions

View File

@ -3,20 +3,42 @@
# AutoBuild_Tools for Openwrt # AutoBuild_Tools for Openwrt
# Depends on bash wget curl block-mount e2fsprogs smartmontools # Depends on bash wget curl block-mount e2fsprogs smartmontools
Version=V1.3.1 Version=V1.4
TIME() {
[[ ! -d ${log_Path} ]] && mkdir -p "${log_Path}"
[[ ! -f ${log_Path}/AutoBuild_Tools.log ]] && touch "${log_Path}/AutoBuild_Tools.log"
[[ -z $1 ]] && {
echo -ne "\n\e[36m[$(date "+%H:%M:%S")]\e[0m "
} || {
case $1 in
r) Color="\e[31m";;
g) Color="\e[32m";;
b) Color="\e[34m";;
y) Color="\e[33m";;
x) Color="\e[36m";;
esac
[[ $# -lt 2 ]] && {
echo -e "\n\e[36m[$(date "+%H:%M:%S")]\e[0m $1"
echo "[$(date "+%Y-%m-%d-%H:%M:%S")] $1" >> ${log_Path}/AutoBuild_Tools.log
} || {
echo -e "\n\e[36m[$(date "+%H:%M:%S")]\e[0m ${Color}$2\e[0m"
echo "[$(date "+%Y-%m-%d-%H:%M:%S")] $2" >> ${log_Path}/AutoBuild_Tools.log
}
}
}
AutoBuild_Tools() { AutoBuild_Tools() {
while : while :
do do
clear clear
echo "" && cat /etc/banner echo -e "${Skyb}$(cat /etc/banner)${White}"
echo -e "\n\nAutoBuild 固件工具箱 ${Version}\n" echo -e "\n\nAutoBuild 固件工具箱 ${Version}\n"
echo "1. USB 空间扩展" echo "1. USB 空间扩展"
echo "2. Samba 一键共享" echo "2. Samba 一键共享"
echo "3. 软件包安装" echo "3. 软件包安装"
echo "4. 查找文件(夹)" echo "4. 端口占用列表"
echo "5. 端口占用列表" echo "5. 查看硬盘信息"
echo "6. 查看硬盘信息"
echo "u. 固件更新" echo "u. 固件更新"
echo -e "\nx. 更新脚本" echo -e "\nx. 更新脚本"
echo -e "q. 退出\n" echo -e "q. 退出\n"
@ -31,26 +53,26 @@ do
[ -f /bin/AutoUpdate.sh ] && { [ -f /bin/AutoUpdate.sh ] && {
AutoUpdate_UI AutoUpdate_UI
} || { } || {
echo "未检测到 '/bin/AutoUpdate.sh',请确保当前固件支持一键更新!" TIME r "未检测到 '/bin/AutoUpdate.sh',请确保当前固件支持一键更新!"
} }
;; ;;
x) x)
wget -q ${Github_Raw}/Scripts/AutoBuild_Tools.sh -O ${AutoBuild_Tools_Temp}/AutoBuild_Tools.sh wget -q ${Github_Raw}/Scripts/AutoBuild_Tools.sh -O ${AutoBuild_Tools_Temp}/AutoBuild_Tools.sh
if [[ $? == 0 ]];then if [[ $? == 0 ]];then
echo -e "\n[AutoBuild_Tools] 脚本更新成功!" TIME y "[AutoBuild_Tools] 脚本更新成功!"
rm -f /bin/AutoBuild_Tools.sh.sh rm -f /bin/AutoBuild_Tools.sh.sh
mv -f ${AutoBuild_Tools_Temp}/AutoBuild_Tools.sh /bin mv -f ${AutoBuild_Tools_Temp}/AutoBuild_Tools.sh /bin
chmod +x /bin/AutoBuild_Tools.sh chmod +x /bin/AutoBuild_Tools.sh
else else
echo -e "\n[AutoBuild_Tools] 脚本更新失败!" TIME r "[AutoBuild_Tools] 脚本更新失败!"
fi fi
sleep 2 sleep 2
;; ;;
1) 1)
which block > /dev/null 2>&1 which block > /dev/null 2>&1
[[ ! $? -eq 0 ]] && { [[ ! $? -eq 0 ]] && {
echo -e "\n缺少相应依赖包,请先安装 [block-mount] !" TIME r "缺少相应依赖包,请先安装 [block-mount] !"
sleep 3 sleep 3
} || { } || {
uci set fstab.@global[0].auto_mount='0' uci set fstab.@global[0].auto_mount='0'
@ -66,31 +88,15 @@ do
AutoInstall_UI AutoInstall_UI
;; ;;
4) 4)
echo ""
read -p "请选择要查找的类型[1.文件/*.文件夹]:" _Type
[[ "${_Type}" == 1 ]] && _Type="f" || _Type="d"
read -p "请输入要查找的路径:" _Path
[[ -z "${_Path}" ]] && _Path="/"
read -p "请输入要查找的文件(夹)名称:" _Name
while [[ -z "${_Name}" ]]
do
echo -e "\n文件(夹)名称不能为空!\n"
read -p "请输入要查找的文件(夹)名称:" _Name
done
echo -e "\n开始从 [${_Path}] 中查找 [${_Name}],请耐心等待 ...\n"
PKG_Finder ${_Type} ${_Path} ${_Name}
Enter
;;
5)
clear clear
echo -e "端口 服务名称\n" echo -e "端口 服务名称\n"
netstat -tanp | egrep ":::[0-9].+|0.0.0.0:[0-9]+|127.0.0.1:[0-9]+" | awk '{print $4"\t "$7}' | sed -r 's/:::/\1/' | sed -r 's/0.0.0.0:/\1/' | sed -r 's/127.0.0.1:/\1/'| sed -r 's/[0-9]+.\//\1/' | sort | uniq netstat -tanp | egrep ":::[0-9].+|0.0.0.0:[0-9]+|127.0.0.1:[0-9]+" | awk '{print $4"\t "$7}' | sed -r 's/:::/\1/' | sed -r 's/0.0.0.0:/\1/' | sed -r 's/127.0.0.1:/\1/'| sed -r 's/[0-9]+.\//\1/' | sort | uniq
Enter Enter
;; ;;
6) 5)
which smartctl > /dev/null 2>&1 which smartctl > /dev/null 2>&1
[[ ! $? -eq 0 ]] && { [[ ! $? -eq 0 ]] && {
echo -e "\n缺少相应依赖包,请先安装 [smartmontools] !" TIME r "缺少相应依赖包,请先安装 [smartmontools] !"
sleep 3 sleep 3
} || Smart_Info } || Smart_Info
;; ;;
@ -102,7 +108,7 @@ AutoExpand_UI() {
clear clear
echo -e "一键 USB 扩展内部空间/AutoExpand\n" echo -e "一键 USB 扩展内部空间/AutoExpand\n"
USB_Check_Core USB_Check_Core
[[ -n "${Check_Disk}" ]] && { [[ -n ${Check_Disk} ]] && {
for ((i=1;i<=${Disk_Number};i++)); for ((i=1;i<=${Disk_Number};i++));
do do
Disk_info=$(sed -n ${i}p ${Disk_Processed_List}) Disk_info=$(sed -n ${i}p ${Disk_Processed_List})
@ -126,15 +132,15 @@ AutoExpand_UI() {
AutoExpand_UI AutoExpand_UI
;; ;;
*) *)
[[ "${Choose}" -gt 0 ]] > /dev/null 2>&1 && [[ "${Choose}" -le "${Disk_Number}" ]] > /dev/null 2>&1 && { [[ ${Choose} -gt 0 ]] > /dev/null 2>&1 && [[ ${Choose} -le ${Disk_Number} ]] > /dev/null 2>&1 && {
which mkfs.ext4 > /dev/null 2>&1 which mkfs.ext4 > /dev/null 2>&1
[[ $? -eq 0 ]] && { [[ $? -eq 0 ]] && {
AutoExpand_Core AutoExpand_Core
} || { } || {
echo "缺少相应依赖包,请先安装 [e2fsprogs] !" && sleep 3 TIME r "缺少相应依赖包,请先安装 [e2fsprogs] !" && sleep 3
} }
} || { } || {
echo "选择错误,请输入正确的选项!" TIME r "选择错误,请输入正确的选项!"
sleep 2 && AutoExpand_UI sleep 2 && AutoExpand_UI
exit exit
} }
@ -147,19 +153,18 @@ USB_Check_Core() {
rm -rf ${AutoExpend_Temp}/* rm -rf ${AutoExpend_Temp}/*
echo "$(block info)" > ${Block_Info} echo "$(block info)" > ${Block_Info}
Check_Disk="$(cat ${Block_Info} | awk -F ':' '/sd/{print $1}')" Check_Disk="$(cat ${Block_Info} | awk -F ':' '/sd/{print $1}')"
[[ -n "${Check_Disk}" ]] && { [[ -n ${Check_Disk} ]] && {
echo "${Check_Disk}" > ${Disk_List} echo "${Check_Disk}" > ${Disk_List}
Disk_Number=$(sed -n '$=' ${Disk_List}) Disk_Number=$(sed -n '$=' ${Disk_List})
for Disk_Name in $(cat ${Disk_List}) for Disk_Name in $(cat ${Disk_List})
do do
Mounted_Point=$(grep "${Disk_Name}" ${Block_Info} | egrep -o 'MOUNT="/[a-z].+' | awk -F '["]' '/MOUNT/{print $2}') Mounted_Point=$(grep "${Disk_Name}" ${Block_Info} | egrep -o 'MOUNT="/[a-z].+' | awk -F '["]' '/MOUNT/{print $2}')
#Mounted_Point=$(grep "${Disk_Name}" ${Block_Info} | egrep -o 'MOUNT=.*' | awk '{print $1}' | sed -r 's/MOUNT="(.*)"/\1/') [[ -z ${Mounted_Point} ]] && Mounted_Point="$(df -h | grep "${Disk_Name}" | awk '{print $6}' | awk 'NR==1')"
[[ -z "${Mounted_Point}" ]] && Mounted_Point="$(df -h | grep "${Disk_Name}" | awk '{print $6}' | awk 'NR==1')"
Disk_Available="$(df -m | grep "${Disk_Name}" | awk '{print $4}' | awk 'NR==1')" Disk_Available="$(df -m | grep "${Disk_Name}" | awk '{print $4}' | awk 'NR==1')"
[[ -z "${Disk_Available}" ]] && Disk_Available=0 [[ -z ${Disk_Available} ]] && Disk_Available=0
Disk_Format="$(cat ${Block_Info} | grep "${Disk_Name}" | egrep -o 'TYPE="[a-z].+' | awk -F '["]' '/TYPE/{print $2}')" Disk_Format="$(cat ${Block_Info} | grep "${Disk_Name}" | egrep -o 'TYPE="[a-z].+' | awk -F '["]' '/TYPE/{print $2}')"
touch ${Disk_Processed_List} touch ${Disk_Processed_List}
[[ -n "${Mounted_Point}" ]] && { [[ -n ${Mounted_Point} ]] && {
echo "${Disk_Name} ${Mounted_Point} ${Disk_Format} ${Disk_Available}MB" >> ${Disk_Processed_List} echo "${Disk_Name} ${Mounted_Point} ${Disk_Format} ${Disk_Available}MB" >> ${Disk_Processed_List}
} || { } || {
echo "${Disk_Name} ${Disk_Format}" >> ${Disk_Processed_List} echo "${Disk_Name} ${Disk_Format}" >> ${Disk_Processed_List}
@ -174,35 +179,34 @@ AutoExpand_Core() {
echo "警告: 本次操作将把硬盘: '${Choosed_Disk}' 格式化为 'ext4' 格式,请提前做好数据备份工作!" echo "警告: 本次操作将把硬盘: '${Choosed_Disk}' 格式化为 'ext4' 格式,请提前做好数据备份工作!"
echo "注意: 操作开始后请不要中断任务或进行其他操作,否则可能导致设备数据丢失!" echo "注意: 操作开始后请不要中断任务或进行其他操作,否则可能导致设备数据丢失!"
read -p "是否继续本次操作?[Y/n]:" Choose read -p "是否继续本次操作?[Y/n]:" Choose
[[ "${Choose}" == [Yy] ]] && sleep 3 && echo "" || { [[ ${Choose} == [Yy] ]] && sleep 3 && echo "" || {
sleep 3 sleep 3
echo "用户已取消操作." TIME "用户已取消操作."
break break
} }
[[ "$(mount)" =~ "${Choosed_Disk}" ]] > /dev/null 2>&1 && { [[ $(mount) =~ ${Choosed_Disk} ]] > /dev/null 2>&1 && {
Choosed_Disk_Mounted="$(mount | grep "${Choosed_Disk}" | awk '{print $3}')" Choosed_Disk_Mounted="$(mount | grep "${Choosed_Disk}" | awk '{print $3}')"
echo "取消挂载: '${Choosed_Disk}' on '${Choosed_Disk_Mounted}' ..." echo "取消挂载: '${Choosed_Disk}' on '${Choosed_Disk_Mounted}' ..."
umount -l ${Choosed_Disk_Mounted} > /dev/null 2>&1 umount -l ${Choosed_Disk_Mounted} > /dev/null 2>&1
[[ "$(mount)" =~ "${Choosed_Disk_Mounted}" ]] > /dev/null 2>&1 && { [[ $(mount) =~ ${Choosed_Disk_Mounted} ]] > /dev/null 2>&1 && {
echo "取消挂载: '${Choosed_Disk_Mounted}' 失败 !" echo "取消挂载: '${Choosed_Disk_Mounted}' 失败 !"
exit 1 exit 1
} }
} }
echo "正在格式化硬盘: '${Choosed_Disk}',请耐心等待 ..." TIME "正在格式化硬盘: '${Choosed_Disk}',请耐心等待 ..."
mkfs.ext4 -F ${Choosed_Disk} > /dev/null 2>&1 mkfs.ext4 -F ${Choosed_Disk} > /dev/null 2>&1
echo "硬盘格式化完成! 挂载硬盘: '${Choosed_Disk}' 到 ' /tmp/extroot' ..." TIME "硬盘格式化完成! 挂载硬盘: '${Choosed_Disk}' 到 ' /tmp/extroot' ..."
mkdir -p /tmp/introot && mkdir -p /tmp/extroot mkdir -p /tmp/introot && mkdir -p /tmp/extroot
mount --bind / /tmp/introot mount --bind / /tmp/introot
mount ${Choosed_Disk} /tmp/extroot mount ${Choosed_Disk} /tmp/extroot
echo "正在备份系统文件到硬盘: '${Choosed_Disk}',请耐心等待 ..." TIME "正在备份系统文件到硬盘: '${Choosed_Disk}',请耐心等待 ..."
tar -C /tmp/introot -cf - . | tar -C /tmp/extroot -xf - tar -C /tmp/introot -cf - . | tar -C /tmp/extroot -xf -
echo "取消挂载: '/tmp/introot' '/tmp/extroot' ..." TIME "取消挂载: '/tmp/introot' '/tmp/extroot' ..."
umount /tmp/introot && umount /tmp/extroot umount /tmp/introot && umount /tmp/extroot
[ ! -d /mnt/bak ] && mkdir -p /mnt/bak [ ! -d /mnt/bak ] && mkdir -p /mnt/bak
mount ${Choosed_Disk} /mnt/bak mount ${Choosed_Disk} /mnt/bak
echo "同步系统文件改动 ..."
sync sync
echo "写入 '分区表' 到 '/etc/config/fstab' ..." TIME "写入 '分区表' 到 '/etc/config/fstab' ..."
block detect > /etc/config/fstab block detect > /etc/config/fstab
sed -i "s?/mnt/bak?/?g" /etc/config/fstab sed -i "s?/mnt/bak?/?g" /etc/config/fstab
for ((i=0;i<=${Disk_Number};i++)); for ((i=0;i<=${Disk_Number};i++));
@ -211,23 +215,23 @@ AutoExpand_Core() {
done done
uci commit fstab uci commit fstab
umount -l /mnt/bak umount -l /mnt/bak
echo -e "操作结束,外接硬盘: '${Choosed_Disk}' 已挂载到 '/'.\n" TIME y "操作结束,外接硬盘: '${Choosed_Disk}' 已挂载到 '/'"
read -p "挂载完成后需要重启生效,是否立即重启路由器?[Y/n]:" Choose read -p "挂载完成后需要重启生效,是否立即重启路由器?[Y/n]:" Choose
[[ ${Choose} == [Yy] ]] && { [[ ${Choose} == [Yy] ]] && {
sleep 3 && echo -e "\n正在重启路由器,请耐心等待 ..." sleep 3 && TIME g "\n正在重启路由器,请耐心等待 ..."
sync sync
reboot reboot
} || { } || {
echo "用户已取消重启操作." TIME "用户已取消重启操作."
sleep 3 sleep 3
break break
} }
} }
List_Disk() { List_Disk() {
[[ -n "${3}" ]] && { [[ -n $3 ]] && {
echo "${i}. '${1}' 挂载点: '${2}' 格式: '${3}' 可用空间: ${4}" echo "${i}. '$1' 挂载点: '$2' 格式: '$3' 可用空间: $4"
} || echo "${i}. '${1}' 格式: '${2}' 未挂载" } || echo "${i}. '$1' 格式: '$2' 未挂载"
} }
AutoSamba_UI() { AutoSamba_UI() {
@ -256,7 +260,7 @@ AutoSamba_UI() {
uci set samba.@samba[0].autoshare='0' uci set samba.@samba[0].autoshare='0'
autosamba_mode="关闭" autosamba_mode="关闭"
} }
echo -e "\n${autosamba_mode} Samba 自动共享!" TIME y "${autosamba_mode} Samba 自动共享!"
uci commit samba uci commit samba
sleep 3 sleep 3
;; ;;
@ -271,11 +275,11 @@ Remove_Samba_Settings() {
while : while :
do do
Samba_config="$(grep "sambashare" /etc/config/samba | wc -l)" Samba_config="$(grep "sambashare" /etc/config/samba | wc -l)"
[[ "${Samba_config}" -eq 0 ]] && break [[ ${Samba_config} -eq 0 ]] && break
uci delete samba.@sambashare[0] uci delete samba.@sambashare[0]
uci commit uci commit
done done
echo -e "\n已删除所有 Samba 挂载点!" TIME y "已删除所有 Samba 挂载点!"
sleep 2 sleep 2
} }
@ -289,8 +293,8 @@ Mount_Samba_Devices() {
Disk_Mounted_Point=$(sed -n ${i}p ${Samba_Disk_List} | awk '{print $2}') Disk_Mounted_Point=$(sed -n ${i}p ${Samba_Disk_List} | awk '{print $2}')
Samba_Name=${Disk_Mounted_Point#*/mnt/} Samba_Name=${Disk_Mounted_Point#*/mnt/}
uci show 2>&1 | grep "sambashare" > ${Samba_UCI_List} uci show 2>&1 | grep "sambashare" > ${Samba_UCI_List}
if [[ ! "$(cat ${Samba_UCI_List})" =~ "${Disk_Name}" ]] > /dev/null 2>&1 ;then if [[ ! $(cat ${Samba_UCI_List}) =~ ${Disk_Name} ]] > /dev/null 2>&1 ;then
echo "共享硬盘: '${Disk_Name}' on '${Disk_Mounted_Point}' 到 '${Samba_Name}' ..." TIME g "共享硬盘: '${Disk_Name}' on '${Disk_Mounted_Point}' 到 '${Samba_Name}' ..."
echo -e "\nconfig sambashare" >> ${Samba_Config} echo -e "\nconfig sambashare" >> ${Samba_Config}
echo -e "\toption auto '1'" >> ${Samba_Config} echo -e "\toption auto '1'" >> ${Samba_Config}
echo -e "\toption name '${Samba_Name}'" >> ${Samba_Config} echo -e "\toption name '${Samba_Name}'" >> ${Samba_Config}
@ -301,7 +305,7 @@ Mount_Samba_Devices() {
echo -e "\toption create_mask '0666'" >> ${Samba_Config} echo -e "\toption create_mask '0666'" >> ${Samba_Config}
echo -e "\toption dir_mask '0777'" >> ${Samba_Config} echo -e "\toption dir_mask '0777'" >> ${Samba_Config}
else else
echo "硬盘: '${Disk_Name}' 已设置共享点: '${Samba_Name}' !" TIME y "硬盘: '${Disk_Name}' 已设置共享点: '${Samba_Name}' !"
fi fi
done done
/etc/init.d/samba restart /etc/init.d/samba restart
@ -362,7 +366,7 @@ do
echo "4. 列出固件信息" echo "4. 列出固件信息"
echo "5. 清除固件下载缓存" echo "5. 清除固件下载缓存"
echo "6. 更改 Github API 地址" echo "6. 更改 Github API 地址"
[[ "${DEFAULT_Device}" == x86_64 ]] && echo "7. 指定 x86 设备下载 UEFI/Legacy 引导的固件" [[ ${DEFAULT_Device} == x86_64 ]] && echo "7. 指定 x86 设备下载 UEFI/Legacy 引导的固件"
echo -e "\nx. 更新 [AutoUpdate] 脚本" echo -e "\nx. 更新 [AutoUpdate] 脚本"
echo -e "q. 返回\n" echo -e "q. 返回\n"
read -p "请从上方选择一个操作:" Choose read -p "请从上方选择一个操作:" Choose
@ -373,11 +377,11 @@ do
x) x)
wget -q ${Github_Raw}/Scripts/AutoUpdate.sh -O ${AutoBuild_Tools_Temp}/AutoUpdate.sh wget -q ${Github_Raw}/Scripts/AutoUpdate.sh -O ${AutoBuild_Tools_Temp}/AutoUpdate.sh
[[ $? == 0 ]] && { [[ $? == 0 ]] && {
echo -e "\n脚本更新成功!" TIME y "脚本更新成功!"
rm -f /bin/AutoUpdate.sh rm -f /bin/AutoUpdate.sh
mv -f ${AutoBuild_Tools_Temp}/AutoUpdate.sh /bin mv -f ${AutoBuild_Tools_Temp}/AutoUpdate.sh /bin
chmod +x /bin/AutoUpdate.sh chmod +x /bin/AutoUpdate.sh
} || echo -e "\n脚本更新失败!" } || TIME r "脚本更新失败!"
sleep 2 sleep 2
;; ;;
1) 1)
@ -390,26 +394,26 @@ do
bash /bin/AutoUpdate.sh -n bash /bin/AutoUpdate.sh -n
;; ;;
4) 4)
bash /bin/AutoUpdate.sh -l bash /bin/AutoUpdate.sh --list
Enter Enter
;; ;;
5) 5)
bash /bin/AutoUpdate.sh -d bash /bin/AutoUpdate.sh --clean
sleep 1 sleep 1
;; ;;
6) 6)
echo "" echo ""
read -p "请输入新的 Github 地址:" _API read -p "请输入新的 Github 地址:" Github_URL
[[ -n ${_API} ]] && bash /bin/AutoUpdate.sh -c ${_API} || { [[ -n ${Github_URL} ]] && bash /bin/AutoUpdate.sh -C ${Github_URL} || {
echo "Github 地址不能为空!" TIME r "Github 地址不能为空!"
} }
sleep 2 sleep 2
;; ;;
7) 7)
echo "" echo ""
read -p "请输入你想要的启动方式[UEFI/Legacy]:" _BOOT read -p "请输入你想要的启动方式[UEFI/Legacy]:" _BOOT
[[ -n ${_BOOT} ]] && bash /bin/AutoUpdate.sh -b ${_BOOT} || { [[ -n ${_BOOT} ]] && bash /bin/AutoUpdate.sh -B ${_BOOT} || {
echo -e "\n启动方式不能为空!" TIME r "启动方式不能为空!"
} }
sleep 2 sleep 2
;; ;;
@ -418,6 +422,7 @@ done
} }
Smart_Info() { Smart_Info() {
TIME g "Loading disk information ,please wait..."
USB_Check_Core USB_Check_Core
clear clear
smartctl -v | awk 'NR==1' smartctl -v | awk 'NR==1'
@ -425,81 +430,92 @@ Smart_Info() {
do do
GET_Smart_Info ${Phy_Disk} GET_Smart_Info ${Phy_Disk}
done done
echo -e "\n==========================================="
Enter Enter
} }
getinf() { getinf() {
grep "$1" $2 | sed "s/^[${1}]*//g" 2>/dev/null | sed 's/^[ \t]*//g' 2>/dev/null grep "$1" $2 | sed "s/^[$1]*//g" 2>/dev/null | sed 's/^[ \t]*//g' 2>/dev/null
} }
GET_Smart_Info() { GET_Smart_Info() {
smartctl -H -A -i $1 > ${Smart_Info1} smartctl -H -A -i $1 > ${Smart_Info1}
smartctl -H -A -i -d scsi $1 > ${Smart_Info2} smartctl -H -A -i -d scsi $1 > ${Smart_Info2}
if [[ ! $(smartctl -H $1) =~ "Unknown" ]];then if [[ ! $(smartctl -H $1) =~ Unknown ]];then
#Phy_Health=$(getinf "SMART overall-health self-assessment test result:" ${Smart_Info1}) [[ $(smartctl -H $1) =~ PASSED ]] && Phy_Health=PASSED || Phy_Health=Failure
[[ $(smartctl -H $1) =~ "PASSED" ]] && Phy_Health=PASSED || Phy_Health=Failure
else else
Phy_Health=$(getinf "SMART Health Status:" ${Smart_Info2}) Phy_Health=$(getinf "SMART Health Status:" ${Smart_Info2})
fi fi
Phy_Name=$(getinf "Device Model:" ${Smart_Info1}) Phy_Name=$(getinf "Device Model:" ${Smart_Info1})
Phy_ID=$(getinf "Serial number:" ${Smart_Info2}) Phy_ID=$(getinf "Serial number:" ${Smart_Info2})
Phy_Capacity=$(getinf "User Capacity:" ${Smart_Info2}) Phy_Capacity=$(getinf "User Capacity:" ${Smart_Info2})
Phy_Part_Number=$(grep -c "${Phy_Disk}" ${Disk_Processed_List})
Phy_Factor=$(getinf "Form Factor:" ${Smart_Info2})
[[ -z ${Phy_Factor} ]] && Phy_Factor=不可用
Phy_Sata_Version=$(getinf "SATA Version is:" ${Smart_Info1}) Phy_Sata_Version=$(getinf "SATA Version is:" ${Smart_Info1})
[[ -z ${Phy_Sata_Version} ]] && Phy_Sata_Version=不可用 [[ -z ${Phy_Sata_Version} ]] && Phy_Sata_Version=不可用
Phy_TRIM=$(getinf "TRIM Command:" ${Smart_Info1}) TRIM_Command=$(getinf "TRIM Command:" ${Smart_Info1})
[[ -z "${Phy_TRIM}" ]] && Phy_TRIM=未知 [[ -z ${TRIM_Command} ]] && TRIM_Command=不可用
Power_On=$(grep "Power_On" ${Smart_Info1} | awk '{print $NF}') Power_On=$(grep "Power_On" ${Smart_Info1} | awk '{print $NF}')
Power_Cycle=$(grep "Power_Cycle_Count" ${Smart_Info1} | awk '{print $NF}') Power_Cycle_Count=$(grep "Power_Cycle_Count" ${Smart_Info1} | awk '{print $NF}')
[[ -z ${Power_On} ]] && Power_On=未知 && Power_Cycle=未知 [[ -z ${Power_On} ]] && {
if [[ "$(getinf "Rotation Rate:" ${Smart_Info2})" =~ "Solid State" ]];then Power_Status=未知
Phy_Type="固态硬盘" } || {
Phy_RPM="不可用" Power_Status="${Power_On} 小时 / ${Power_Cycle_Count}"
}
if [[ $(getinf "Rotation Rate:" ${Smart_Info2}) =~ "Solid State" ]];then
Phy_Type=固态硬盘
Phy_RPM=不可用
else else
Phy_Type="普通硬盘" Phy_Type=其他硬盘
if [[ "$(getinf "Rotation Rate:" ${Smart_Info2})" =~ "rpm" ]];then if [[ $(getinf "Rotation Rate:" ${Smart_Info2}) =~ rpm ]];then
Phy_RPM="$(getinf "Rotation Rate:" ${Smart_Info2})" Phy_RPM="$(getinf "Rotation Rate:" ${Smart_Info2})"
Phy_Type=机械硬盘
else else
Phy_RPM="不可用" Phy_RPM=不可用
fi fi
fi fi
[[ -z "${Phy_Name}" ]] && { [[ -z ${Phy_Name} ]] && {
Phy_Name="$(getinf Vendor: ${Smart_Info2})$(getinf Product: ${Smart_Info2})" Phy_Name="$(getinf Vendor: ${Smart_Info2})$(getinf Product: ${Smart_Info2})"
} }
Phy_LB=$(getinf "Logical block size:" ${Smart_Info2}) Phy_LB=$(getinf "Logical block size:" ${Smart_Info2})
Phy_PB=$(getinf "Physical block size:" ${Smart_Info2}) Phy_PB=$(getinf "Physical block size:" ${Smart_Info2})
if [[ -n "${Phy_PB}" ]];then if [[ -n ${Phy_PB} ]];then
Phy_BS="${Phy_LB} / ${Phy_PB}" Phy_BS="${Phy_LB} / ${Phy_PB}"
else else
Phy_BS="${Phy_LB}" Phy_BS="${Phy_LB}"
fi fi
Phy_Localtime=$(getinf "Local Time is:" ${Smart_Info2}) Phy_Localtime=$(getinf "Local Time is:" ${Smart_Info2})
echo -e "\n===========================================\n" cat <<EOF
echo "硬盘型号: ${Phy_Name}"
echo "硬盘 ID : ${Phy_ID}" 硬盘型号: ${Phy_Name}
echo "健康状况: ${Phy_Health}" 硬盘尺寸: ${Phy_Factor}
echo "硬盘容量: ${Phy_Capacity}" 硬盘 ID : ${Phy_ID}
echo "SATA版本: ${Phy_Sata_Version}" 硬盘容量: ${Phy_Capacity}
echo "TRIM指令: ${Phy_TRIM}" 健康状况: ${Phy_Health}
echo "硬盘类型: ${Phy_Type}" 分区数量: ${Phy_Part_Number}
echo "硬盘转速: ${Phy_RPM}" SATA 版本: ${Phy_Sata_Version}
echo "扇区大小: ${Phy_BS}" TRIM 指令: ${TRIM_Command}
echo "通电时间: ${Power_On}" 硬盘类型: ${Phy_Type}
echo "通电次数: ${Power_Cycle}" 硬盘转速: ${Phy_RPM}
echo "本地时间: ${Phy_Localtime}" 扇区大小: ${Phy_BS}
通电情况: ${Power_Status}
========================================================
EOF
} }
AutoInstall_UI_mod() { AutoInstall_UI_mod() {
[[ "$(opkg list | awk '{print $1}')" =~ "${2}" ]] > /dev/null 2>&1 && { [[ $(opkg list | awk '{print $1}') =~ $2 ]] > /dev/null 2>&1 && {
echo "${1}. 安装 [${2}] [已安装]" echo "$1. 安装 [$2] [已安装]"
} || echo "${1}. 未安装 [${2}] [已安装]" } || echo "$1. 未安装 [$2] [已安装]"
} }
Install_opkg_mod() { Install_opkg_mod() {
opkg install ${*} opkg install ${*}
[[ "$(opkg list | awk '{print $1}')" =~ "${1}" ]] > /dev/null 2>&1 && { [[ $(opkg list | awk '{print $1}') =~ $1 ]] > /dev/null 2>&1 && {
echo -e "\n${1} 安装成功!" TIME y "$1 安装成功!"
} || echo -e "\n${1} 安装失败!" } || TIME r "$1 安装失败!"
sleep 2 sleep 2
} }
@ -507,35 +523,27 @@ Enter() {
echo "" && read -p "按下[回车]键以继续..." Key echo "" && read -p "按下[回车]键以继续..." Key
} }
PKG_Finder() { export White="\e[0m"
[[ $# -ne 3 ]] && { export Yellow="\e[33m"
TIME "[ERROR] Error options: [$#] [$*] !" export Red="\e[31m"
return 0 export Blue="\e[34m"
} export Skyb="\e[36m"
unset PKG_RESULT
_PKG_TYPE=${1}
_PKG_DIR=${2}
_PKG_NAME=${3}
[[ -z ${_PKG_TYPE} ]] && [[ -z ${_PKG_NAME} ]] || [[ -z ${_PKG_DIR} ]] && return
_PKG_RESULT=$(find ${_PKG_DIR} -name ${_PKG_NAME} -type ${_PKG_TYPE} -exec echo {} \;)
[[ -n "${_PKG_RESULT}" ]] && echo "${_PKG_RESULT}"
unset _PKG_TYPE _PKG_DIR _PKG_NAME
}
AutoBuild_Tools_Temp="/tmp/AutoBuild_Tools" AutoBuild_Tools_Temp="/tmp/AutoBuild_Tools"
AutoExpend_Temp="${AutoBuild_Tools_Temp}/AutoExpand" AutoExpend_Temp="${AutoBuild_Tools_Temp}/AutoExpand"
log_Path=/tmp
Disk_List="${AutoExpend_Temp}/Disk_List" Disk_List="${AutoExpend_Temp}/Disk_List"
Block_Info="${AutoExpend_Temp}/Block_Info" Block_Info="${AutoExpend_Temp}/Block_Info"
Disk_Processed_List="${AutoExpend_Temp}/Disk_Processed_List" Disk_Processed_List="${AutoExpend_Temp}/Disk_Processed_List"
Phy_Disk_List="${AutoExpend_Temp}/Phy_Disk_List" Phy_Disk_List="${AutoExpend_Temp}/Phy_Disk_List"
Smart_Info1="${AutoExpend_Temp}/Smart_Info1" Smart_Info1="${AutoExpend_Temp}/Smart_Info1"
Smart_Info2="${AutoExpend_Temp}/Smart_Info2" Smart_Info2="${AutoExpend_Temp}/Smart_Info2"
[ ! -d "${AutoExpend_Temp}" ] && mkdir -p "${AutoExpend_Temp}" [[ ! -d ${AutoExpend_Temp} ]] && mkdir -p "${AutoExpend_Temp}"
Samba_Config="/etc/config/samba" Samba_Config="/etc/config/samba"
Samba_Temp="${AutoBuild_Tools_Temp}/AutoSamba" Samba_Temp="${AutoBuild_Tools_Temp}/AutoSamba"
Samba_Disk_List="${Samba_Temp}/Disk_List" Samba_Disk_List="${Samba_Temp}/Disk_List"
Samba_UCI_List="${Samba_Temp}/UCI_List" Samba_UCI_List="${Samba_Temp}/UCI_List"
[ ! -d "${Samba_Temp}" ] && mkdir -p "${Samba_Temp}" [[ ! -d ${Samba_Temp} ]] && mkdir -p "${Samba_Temp}"
Github_Raw="https://raw.githubusercontent.com/Hyy2001X/AutoBuild-Actions/master" Github_Raw="https://raw.githubusercontent.com/Hyy2001X/AutoBuild-Actions/master"
[ -f /etc/openwrt_info ] && source /etc/openwrt_info [ -f /etc/openwrt_info ] && source /etc/openwrt_info
AutoBuild_Tools AutoBuild_Tools