mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
feat(set_crashdir.sh): adapt new designs for more interfaces
This commit is contained in:
@@ -3,95 +3,113 @@
|
||||
|
||||
[ -f /tmp/SC_tmp/libs/check_dir_avail.sh ] && . /tmp/SC_tmp/libs/check_dir_avail.sh
|
||||
|
||||
cecho() {
|
||||
printf '%b\n' "$*"
|
||||
}
|
||||
set_usb_dir() {
|
||||
while true; do
|
||||
cecho "请选择安装目录"
|
||||
du -hL /mnt | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
comp_box "请选择安装目录:"
|
||||
du -hL /mnt |
|
||||
awk '{print NR") "$2 " " $1}' |
|
||||
while IFS= read -r line; do
|
||||
content_line "$line"
|
||||
done
|
||||
separator_line "="
|
||||
read -r -p "请输入相应数字> " num
|
||||
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ -z "$dir" ]; then
|
||||
cecho "\033[31m输入错误!请重新设置!\033[0m"
|
||||
msg_alert "\033[31m输入错误!请重新设置!\033[0m"
|
||||
continue
|
||||
fi
|
||||
break 1
|
||||
done
|
||||
}
|
||||
|
||||
set_xiaomi_dir() {
|
||||
cecho "\033[33m检测到当前设备为小米官方系统,请选择安装位置\033[0m"
|
||||
[ -d /data ] && cecho " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)"
|
||||
[ -d /userdisk ] && cecho " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)"
|
||||
[ -d /data/other_vol ] && cecho " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)"
|
||||
cecho " 4 安装到自定义目录(不推荐,不明勿用!)"
|
||||
cecho " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
comp_box "\033[33m检测到当前设备为小米官方系统,请选择安装位置:\033[0m"
|
||||
[ -d /data ] && content_line "1) /data目录,剩余空间:$(dir_avail /data -h) (支持软固化功能)"
|
||||
[ -d /userdisk ] && content_line "2) /userdisk目录,剩余空间:$(dir_avail /userdisk -h) (支持软固化功能)"
|
||||
[ -d /data/other_vol ] && content_line "3) /data/other_vol目录,剩余空间:$(dir_avail /data/other_vol -h) (支持软固化功能)"
|
||||
content_line "4) 自定义目录(不推荐,不明勿用!)"
|
||||
content_line ""
|
||||
content_line "0) 退出安装"
|
||||
separator_line "="
|
||||
read -r -p "请输入相应数字> " num
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/data
|
||||
;;
|
||||
2)
|
||||
dir=/userdisk
|
||||
;;
|
||||
3)
|
||||
dir=/data/other_vol
|
||||
;;
|
||||
4)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
line_break
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
set_asus_usb() {
|
||||
while true; do
|
||||
echo -e "请选择U盘目录"
|
||||
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}'
|
||||
read -p "请输入相应数字 > " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
echo -e "\033[31m未找到下载大师自启文件:$dir/asusware.arm/etc/init.d/S50downloadmaster,请检查设置!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
while true; do
|
||||
comp_box "请选择U盘目录:"
|
||||
du -hL /tmp/mnt |
|
||||
awk -F/ 'NF<=4 {print NR") "$2 " " $1}' |
|
||||
while IFS= read -r line; do
|
||||
content_line "$line"
|
||||
done
|
||||
separator_line "="
|
||||
read -r -p "请输入相应数字> " num
|
||||
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
|
||||
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
|
||||
msg_alert "\033[31m未找到下载大师自启文件:$dir/asusware.arm/etc/init.d/S50downloadmaster,请检查设置!\033[0m"
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
set_asus_dir() {
|
||||
cecho "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m"
|
||||
cecho " 1 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)"
|
||||
cecho " 2 基于自启脚本安装(仅支持部分梅林固件)"
|
||||
cecho " 0 退出安装"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
case "$num" in
|
||||
1)
|
||||
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
sleep 2
|
||||
set_asus_usb
|
||||
;;
|
||||
2)
|
||||
cecho "如开机无法正常自启,请重新使用U盘+下载大师安装!"
|
||||
sleep 2
|
||||
dir=/jffs
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
separator_line "="
|
||||
btm_box "\033[33m检测到当前设备为华硕固件,请选择安装方式\033[0m" \
|
||||
"1) 基于U盘+下载大师安装(支持所有固件,限ARM设备,须插入U盘或移动硬盘)" \
|
||||
"2) 基于自启脚本安装(仅持部分梅林固件)" \
|
||||
"" \
|
||||
"0) 退出安装"
|
||||
read -r -p "请输入相应数字> " num
|
||||
case "$num" in
|
||||
1)
|
||||
msg_alert -t 2 "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
|
||||
set_asus_usb
|
||||
;;
|
||||
2)
|
||||
msg_alert -t 2 "如开机无法正常自启,请重新使用U盘+下载大师安装!"
|
||||
dir=/jffs
|
||||
;;
|
||||
*)
|
||||
line_break
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
set_cust_dir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
echo '可用路径 剩余空间:'
|
||||
df -h | awk '{print $6,$4}' | sed 1d
|
||||
echo '路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!'
|
||||
read -p "请输入自定义路径 > " dir
|
||||
comp_box "路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!" \
|
||||
"" \
|
||||
"可用路径 剩余空间:"
|
||||
df -h |
|
||||
awk '{print $6, $4}' |
|
||||
sed '1d' |
|
||||
while IFS= read -r line; do
|
||||
content_line "$line"
|
||||
done
|
||||
separator_line "="
|
||||
read -r -p "请输入自定义路径> " dir
|
||||
if [ "$(dir_avail "$dir")" = 0 ] || [ -n "$(echo "$dir" | grep -Eq '^/(tmp|opt|sys)(/|$)')" ]; then
|
||||
cecho "\033[31m路径错误!请重新设置!\033[0m"
|
||||
msg_alert "\033[31m路径错误!请重新设置!\033[0m"
|
||||
continue
|
||||
fi
|
||||
break 1
|
||||
@@ -100,54 +118,66 @@ set_cust_dir() {
|
||||
|
||||
set_crashdir() {
|
||||
while true; do
|
||||
echo "-----------------------------------------------"
|
||||
cecho "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||
top_box "\033[33m注意:安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
|
||||
case "$systype" in
|
||||
Padavan) dir=/etc/storage ;;
|
||||
mi_snapshot) set_xiaomi_dir ;;
|
||||
asusrouter) set_asus_dir ;;
|
||||
ng_snapshot) dir=/tmp/mnt ;;
|
||||
*)
|
||||
cecho " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)"
|
||||
cecho " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)"
|
||||
cecho " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)"
|
||||
cecho " 4 在\033[32m外置存储\033[0m中安装"
|
||||
cecho " 5 手动设置安装目录"
|
||||
cecho " 0 退出安装"
|
||||
echo "----------------------------------------------"
|
||||
read -p "请输入相应数字 > " num
|
||||
# 设置目录
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
echo "安装已取消"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
Padavan)
|
||||
dir=/etc/storage
|
||||
;;
|
||||
mi_snapshot)
|
||||
set_xiaomi_dir
|
||||
;;
|
||||
asusrouter)
|
||||
set_asus_dir
|
||||
;;
|
||||
ng_snapshot)
|
||||
dir=/tmp/mnt
|
||||
;;
|
||||
*)
|
||||
separator_line "="
|
||||
btm_box "1) 在\033[32m/etc目录\033[0m下安装(适合root用户)" \
|
||||
"2) 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)" \
|
||||
"3) 在\033[32m当前用户目录\033[0m下安装(适合非root用户)" \
|
||||
"4) 在\033[32m外置存储\033[0m中安装" \
|
||||
"5) 手动设置安装目录" \
|
||||
"" \
|
||||
"0) 退出安装"
|
||||
read -r -p "请输入相应数字> " num
|
||||
# 设置目录
|
||||
case "$num" in
|
||||
1)
|
||||
dir=/etc
|
||||
;;
|
||||
2)
|
||||
dir=/usr/share
|
||||
;;
|
||||
3)
|
||||
dir=~/.local/share
|
||||
mkdir -p ~/.config/systemd/user
|
||||
;;
|
||||
4)
|
||||
set_usb_dir
|
||||
;;
|
||||
5)
|
||||
set_cust_dir
|
||||
;;
|
||||
*)
|
||||
msg_alert "安装已取消"
|
||||
line_break
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -w "$dir" ]; then
|
||||
cecho "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
|
||||
sleep 1
|
||||
msg_alert "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
|
||||
else
|
||||
cecho "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail "$dir" -h)"
|
||||
read -p "确认安装?(1/0) > " res
|
||||
comp_box "目标目录\033[32m$dir\033[0m空间剩余:$(dir_avail "$dir" -h)" \
|
||||
"" \
|
||||
"是否确认安装?"
|
||||
btm_box "1) 是" \
|
||||
"0) 否"
|
||||
read -r -p "请输入相应数字> " res
|
||||
if [ "$res" = "1" ]; then
|
||||
CRASHDIR="$dir"/ShellCrash
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user