Merge pull request #1074 from ruth-hale/patch-4

Continue replace self-invoked with a while true loop
This commit is contained in:
juewuy
2026-01-06 13:25:31 +08:00
committed by GitHub

View File

@@ -218,280 +218,284 @@ mi_autoSSH() {
setconfig mi_mi_autoSSH_pwd $mi_mi_autoSSH_pwd setconfig mi_mi_autoSSH_pwd $mi_mi_autoSSH_pwd
sleep 1 sleep 1
} }
#日志菜单 #日志菜单
log_pusher() { log_pusher() {
[ -n "$push_TG" ] && stat_TG=32m已启用 || stat_TG=33m未启用 while true; do
[ -n "$push_Deer" ] && stat_Deer=32m已启用 || stat_Deer=33m未启用 [ -n "$push_TG" ] && stat_TG=32m已启用 || stat_TG=33m未启用
[ -n "$push_bark" ] && stat_bark=32m已启用 || stat_bark=33m未启用 [ -n "$push_Deer" ] && stat_Deer=32m已启用 || stat_Deer=33m未启用
[ -n "$push_Po" ] && stat_Po=32m已启用 || stat_Po=33m未启用 [ -n "$push_bark" ] && stat_bark=32m已启用 || stat_bark=33m未启用
[ -n "$push_PP" ] && stat_PP=32m已启用 || stat_PP=33m未启用 [ -n "$push_Po" ] && stat_Po=32m已启用 || stat_Po=33m未启用
[ -n "$push_SynoChat" ] && stat_SynoChat=32m已启用 || stat_SynoChat=33m未启用 [ -n "$push_PP" ] && stat_PP=32m已启用 || stat_PP=33m未启用
[ -n "$push_Gotify" ] && stat_Gotify=32m已启用 || stat_Gotify=33m未启用 [ -n "$push_SynoChat" ] && stat_SynoChat=32m已启用 || stat_SynoChat=33m未启用
[ "$task_push" = 1 ] && stat_task=32m已启用 || stat_task=33m未启用 [ -n "$push_Gotify" ] && stat_Gotify=32m已启用 || stat_Gotify=33m未启用
[ -n "$device_name" ] && device_s=32m$device_name || device_s=33m未设置 [ "$task_push" = 1 ] && stat_task=32m已启用 || stat_task=33m未启用
echo "-----------------------------------------------" [ -n "$device_name" ] && device_s=32m$device_name || device_s=33m未设置
echo -e " 1 Telegram推送 ——\033[$stat_TG\033[0m" echo "-----------------------------------------------"
echo -e " 2 PushDeer推送 ——\033[$stat_Deer\033[0m" echo -e " 1 Telegram推送 ——\033[$stat_TG\033[0m"
echo -e " 3 Bark推送-IOS ——\033[$stat_bark\033[0m" echo -e " 2 PushDeer推送 ——\033[$stat_Deer\033[0m"
echo -e " 4 Passover推送 ——\033[$stat_Po\033[0m" echo -e " 3 Bark推送-IOS ——\033[$stat_bark\033[0m"
echo -e " 5 PushPlus推送 ——\033[$stat_PP\033[0m" echo -e " 4 Passover推送 ——\033[$stat_Po\033[0m"
echo -e " 6 SynoChat推送 ——\033[$stat_SynoChat\033[0m" echo -e " 5 PushPlus推送 ——\033[$stat_PP\033[0m"
echo -e " 7 Gotify推送 ——\033[$stat_Gotify\033[0m" echo -e " 6 SynoChat推送 ——\033[$stat_SynoChat\033[0m"
echo "-----------------------------------------------" echo -e " 7 Gotify推送 ——\033[$stat_Gotify\033[0m"
echo -e " a 查看\033[36m运行日志\033[0m" echo "-----------------------------------------------"
echo -e " b 推送任务日志 ——\033[$stat_task\033[0m" echo -e " a 查看\033[36m运行日志\033[0m"
echo -e " c 设置设备名称 ——\033[$device_s\033[0m" echo -e " b 推送任务日志 ——\033[$stat_task\033[0m"
echo -e " d 清空日志文件" echo -e " c 设置设备名称 ——\033[$device_s\033[0m"
echo "-----------------------------------------------" echo -e " d 清空日志文件"
read -p "请输入对应数字 > " num echo "-----------------------------------------------"
case "$num" in echo -e " 0 返回上级菜单"
a) echo "-----------------------------------------------"
if [ -s "$TMPDIR"/ShellCrash.log ]; then read -p "请输入对应数字 > " num
echo "-----------------------------------------------" case "$num" in
cat "$TMPDIR"/ShellCrash.log ""|0)
exit 0 break
else ::
echo -e "\033[31m未找到相关日志\033[0m" 1)
fi echo "-----------------------------------------------"
sleep 1 if [ -n "$push_TG" ]; then
;; read -p "确认关闭TG日志推送(1/0) > " res
1) [ "$res" = 1 ] && {
echo "-----------------------------------------------" push_TG=
if [ -n "$push_TG" ]; then chat_ID=
read -p "确认关闭TG日志推送(1/0) > " res setconfig push_TG
[ "$res" = 1 ] && { setconfig chat_ID
push_TG= }
chat_ID= else
setconfig push_TG #echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
setconfig chat_ID . "$CRASHDIR"/menus/bot_tg_bind.sh
} chose_bot() {
else echo "-----------------------------------------------"
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" echo -e " 1 使用公共机器人 ——不依赖内核服务"
. "$CRASHDIR"/menus/bot_tg_bind.sh echo -e " 2 使用私人机器人 ——需要额外申请"
chose_bot() { echo "-----------------------------------------------"
echo "-----------------------------------------------" read -p "请输入对应数字 > " num
echo -e " 1 使用公共机器人 ——不依赖内核服务" case $num in
echo -e " 2 使用私人机器人 ——需要额外申请" 1)
echo "-----------------------------------------------" public_bot
read -p "请输入对应数字 > " num set_bot && tg_push_token || chose_bot
case $num in ;;
1) 2)
public_bot private_bot
set_bot && tg_push_token || chose_bot set_bot && tg_push_token || chose_bot
;; ;;
2) *)
private_bot errornum
set_bot && tg_push_token || chose_bot ;;
;; esac
*) }
errornum chose_bot
;; fi
esac sleep 1
} ;;
chose_bot 2)
fi echo "-----------------------------------------------"
sleep 1 if [ -n "$push_Deer" ]; then
log_pusher read -p "确认关闭PushDeer日志推送(1/0) > " res
;; [ "$res" = 1 ] && {
2) push_Deer=
echo "-----------------------------------------------" setconfig push_Deer
if [ -n "$push_Deer" ]; then }
read -p "确认关闭PushDeer日志推送(1/0) > " res else
[ "$res" = 1 ] && { #echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
push_Deer= echo -e "请先前往 \033[32;4mhttp://www.pushdeer.com/official.html\033[0m 扫码安装快应用或下载APP"
setconfig push_Deer echo -e "打开快应用/APP并完成登陆"
} echo -e "\033[33m切换到「设备」标签页点击右上角的加号注册当前设备\033[0m"
else echo -e "\033[36m切换到「秘钥」标签页点击右上角的加号创建一个秘钥并复制\033[0m"
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" echo "-----------------------------------------------"
echo -e "请先前往 \033[32;4mhttp://www.pushdeer.com/official.html\033[0m 扫码安装快应用或下载APP" read -p "请输入你复制的秘钥 > " url
echo -e "打开快应用/APP并完成登陆" if [ -n "$url" ]; then
echo -e "\033[33m切换到「设备」标签页点击右上角的加号注册当前设备\033[0m" push_Deer=$url
echo -e "\033[36m切换到「秘钥」标签页点击右上角的加号创建一个秘钥并复制\033[0m" setconfig push_Deer $url
echo "-----------------------------------------------" logger "已完成PushDeer日志推送设置" 32
read -p "请输入你复制的秘钥 > " url else
if [ -n "$url" ]; then echo -e "\033[31m输入错误请重新输入\033[0m"
push_Deer=$url fi
setconfig push_Deer $url sleep 1
logger "已完成PushDeer日志推送设置" 32 fi
else ;;
echo -e "\033[31m输入错误请重新输入\033[0m" 3)
fi echo "-----------------------------------------------"
sleep 1 if [ -n "$push_bark" ]; then
fi read -p "确认关闭Bark日志推送(1/0) > " res
log_pusher [ "$res" = 1 ] && {
;; push_bark=
3) bark_param=
echo "-----------------------------------------------" setconfig push_bark
if [ -n "$push_bark" ]; then setconfig bark_param
read -p "确认关闭Bark日志推送(1/0) > " res }
[ "$res" = 1 ] && { else
push_bark= #echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
bark_param= echo -e "\033[33mBark推送仅支持IOS系统其他平台请使用其他推送方式\033[0m"
setconfig push_bark echo -e "\033[32m请安装Bark-IOS客户端并在客户端中找到专属推送链接\033[0m"
setconfig bark_param echo "-----------------------------------------------"
} read -p "请输入你的Bark推送链接 > " url
else if [ -n "$url" ]; then
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" push_bark=$url
echo -e "\033[33mBark推送仅支持IOS系统其他平台请使用其他推送方式\033[0m" setconfig push_bark $url
echo -e "\033[32m请安装Bark-IOS客户端并在客户端中找到专属推送链接\033[0m" logger "已完成Bark日志推送设置" 32
echo "-----------------------------------------------" else
read -p "请输入你的Bark推送链接 > " url echo -e "\033[31m输入错误请重新输入\033[0m"
if [ -n "$url" ]; then fi
push_bark=$url sleep 1
setconfig push_bark $url fi
logger "已完成Bark日志推送设置" 32 ;;
else 4)
echo -e "\033[31m输入错误请重新输入\033[0m" echo "-----------------------------------------------"
fi if [ -n "$push_Po" ]; then
sleep 1 read -p "确认关闭Pushover日志推送(1/0) > " res
fi [ "$res" = 1 ] && {
log_pusher push_Po=
;; push_Po_key=
4) setconfig push_Po
echo "-----------------------------------------------" setconfig push_Po_key
if [ -n "$push_Po" ]; then }
read -p "确认关闭Pushover日志推送(1/0) > " res else
[ "$res" = 1 ] && { #echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
push_Po= echo -e "请先通过 \033[32;4mhttps://pushover.net/\033[0m 注册账号并获取\033[36mUser Key\033[0m"
push_Po_key= echo "-----------------------------------------------"
setconfig push_Po read -p "请输入你的User Key > " key
setconfig push_Po_key if [ -n "$key" ]; then
} echo "-----------------------------------------------"
else echo -e "\033[33m请检查注册邮箱完成账户验证\033[0m"
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" read -p "我已经验证完成(1/0) > "
echo -e "请先通过 \033[32;4mhttps://pushover.net/\033[0m 注册账号并获取\033[36mUser Key\033[0m" echo "-----------------------------------------------"
echo "-----------------------------------------------" echo -e "请通过 \033[32;4mhttps://pushover.net/apps/build\033[0m 生成\033[36mAPI Token\033[0m"
read -p "请输入你的User Key > " key echo "-----------------------------------------------"
if [ -n "$key" ]; then read -p "请输入你的API Token > " Token
echo "-----------------------------------------------" if [ -n "$Token" ]; then
echo -e "\033[33m请检查注册邮箱完成账户验证\033[0m" push_Po=$Token
read -p "我已经验证完成(1/0) > " push_Po_key=$key
echo "-----------------------------------------------" setconfig push_Po $Token
echo -e "请通过 \033[32;4mhttps://pushover.net/apps/build\033[0m 生成\033[36mAPI Token\033[0m" setconfig push_Po_key $key
echo "-----------------------------------------------" logger "已完成Passover日志推送设置" 32
read -p "请输入你的API Token > " Token else
if [ -n "$Token" ]; then echo -e "\033[31m输入错误请重新输入\033[0m"
push_Po=$Token fi
push_Po_key=$key else
setconfig push_Po $Token echo -e "\033[31m输入错误请重新输入\033[0m"
setconfig push_Po_key $key fi
logger "已完成Passover日志推送设置" 32 fi
else sleep 1
echo -e "\033[31m输入错误请重新输入\033[0m" ;;
fi 5)
else echo "-----------------------------------------------"
echo -e "\033[31m输入错误请重新输入\033[0m" if [ -n "$push_PP" ]; then
fi read -p "确认关闭PushPlus日志推送(1/0) > " res
fi [ "$res" = 1 ] && {
sleep 1 push_PP=
log_pusher setconfig push_PP
;; }
5) else
echo "-----------------------------------------------" #echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m"
if [ -n "$push_PP" ]; then echo -e "请先通过 \033[32;4mhttps://www.pushplus.plus/push1.html\033[0m 注册账号并获取\033[36mtoken\033[0m"
read -p "确认关闭PushPlus日志推送(1/0) > " res echo "-----------------------------------------------"
[ "$res" = 1 ] && { read -p "请输入你的token > " Token
push_PP= if [ -n "$Token" ]; then
setconfig push_PP push_PP=$Token
} setconfig push_PP $Token
else logger "已完成PushPlus日志推送设置" 32
#echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" else
echo -e "请先通过 \033[32;4mhttps://www.pushplus.plus/push1.html\033[0m 注册账号并获取\033[36mtoken\033[0m" echo -e "\033[31m输入错误请重新输入\033[0m"
echo "-----------------------------------------------" fi
read -p "请输入你的token > " Token fi
if [ -n "$Token" ]; then sleep 1
push_PP=$Token ;;
setconfig push_PP $Token 6)
logger "已完成PushPlus日志推送设置" 32 echo "-----------------------------------------------"
else if [ -n "$push_SynoChat" ]; then
echo -e "\033[31m输入错误请重新输入\033[0m" read -p "确认关闭SynoChat日志推送(1/0) > " res
fi [ "$res" = 1 ] && {
fi push_SynoChat=
sleep 1 setconfig push_SynoChat
log_pusher }
;; else
6) echo "-----------------------------------------------"
echo "-----------------------------------------------" read -p "请输入你的Synology DSM主页地址 > " URL
if [ -n "$push_SynoChat" ]; then echo "-----------------------------------------------"
read -p "确认关闭SynoChat日志推送(1/0) > " res read -p "请输入你的Synology Chat Token > " TOKEN
[ "$res" = 1 ] && { echo "-----------------------------------------------"
push_SynoChat= echo -e '请通过"你的群晖地址/webapi/entry.cgi?api=SYNO.Chat.External&method=user_list&version=2&token=你的TOKEN"获取user_id'
setconfig push_SynoChat echo "-----------------------------------------------"
} read -p "请输入你的user_id > " USERID
else if [ -n "$URL" ]; then
echo "-----------------------------------------------" push_SynoChat=$USERID
read -p "请输入你的Synology DSM主页地址 > " URL setconfig push_SynoChat $USERID
echo "-----------------------------------------------" setconfig push_ChatURL $URL
read -p "请输入你的Synology Chat Token > " TOKEN setconfig push_ChatTOKEN $TOKEN
echo "-----------------------------------------------" setconfig push_ChatUSERID $USERID
echo -e '请通过"你的群晖地址/webapi/entry.cgi?api=SYNO.Chat.External&method=user_list&version=2&token=你的TOKEN"获取user_id' logger "已完成SynoChat日志推送设置" 32
echo "-----------------------------------------------" else
read -p "请输入你的user_id > " USERID echo -e "\033[31m输入错误请重新输入\033[0m"
if [ -n "$URL" ]; then setconfig push_ChatURL
push_SynoChat=$USERID setconfig push_ChatTOKEN
setconfig push_SynoChat $USERID setconfig push_ChatUSERID
setconfig push_ChatURL $URL push_SynoChat=
setconfig push_ChatTOKEN $TOKEN setconfig push_SynoChat
setconfig push_ChatUSERID $USERID fi
logger "已完成SynoChat日志推送设置" 32 fi
else sleep 1
echo -e "\033[31m输入错误请重新输入\033[0m" ;;
setconfig push_ChatURL # 在menu.sh的case $num in代码块中添加
setconfig push_ChatTOKEN 7)
setconfig push_ChatUSERID echo "-----------------------------------------------"
push_SynoChat= if [ -n "$push_Gotify" ]; then
setconfig push_SynoChat read -p "确认关闭Gotify日志推送(1/0) > " res
fi [ "$res" = 1 ] && {
fi push_Gotify=
sleep 1 setconfig push_Gotify
log_pusher }
;; else
# 在menu.sh的case $num in代码块中添加 echo -e "请先通过Gotify服务器获取推送URL"
7) echo -e "格式示例: https://gotify.example.com/message?token=你的应用令牌"
echo "-----------------------------------------------" echo "-----------------------------------------------"
if [ -n "$push_Gotify" ]; then read -p "请输入你的Gotify推送URL > " url
read -p "确认关闭Gotify日志推送(1/0) > " res if [ -n "$url" ]; then
[ "$res" = 1 ] && { push_Gotify=$url
push_Gotify= setconfig push_Gotify "$url"
setconfig push_Gotify logger "已完成Gotify日志推送设置" 32
} else
else echo -e "\033[31m输入错误请重新输入\033[0m"
echo -e "请先通过Gotify服务器获取推送URL" fi
echo -e "格式示例: https://gotify.example.com/message?token=你的应用令牌" fi
echo "-----------------------------------------------" sleep 1
read -p "请输入你的Gotify推送URL > " url ;;
if [ -n "$url" ]; then a)
push_Gotify=$url if [ -s "$TMPDIR"/ShellCrash.log ]; then
setconfig push_Gotify "$url" echo "-----------------------------------------------"
logger "已完成Gotify日志推送设置" 32 cat "$TMPDIR"/ShellCrash.log
else exit 0
echo -e "\033[31m输入错误请重新输入\033[0m" else
fi echo -e "\033[31m未找到相关日志\033[0m"
fi fi
sleep 1 sleep 1
log_pusher break
;; ;;
b) b)
[ "$task_push" = 1 ] && task_push='' || task_push=1 [ "$task_push" = 1 ] && task_push='' || task_push=1
setconfig task_push $task_push setconfig task_push $task_push
sleep 1 sleep 1
log_pusher ;;
;; c)
c) read -p "请输入本设备自定义推送名称 > " device_name
read -p "请输入本设备自定义推送名称 > " device_name setconfig device_name $device_name
setconfig device_name $device_name sleep 1
sleep 1 ;;
log_pusher d)
;; echo -e "\033[33m运行日志及任务日志均已清空\033[0m"
d) rm -rf "$TMPDIR"/ShellCrash.log
echo -e "\033[33m运行日志及任务日志均已清空\033[0m" sleep 1
rm -rf "$TMPDIR"/ShellCrash.log ;;
sleep 1 *)
log_pusher errornum
;; sleep 1
*) errornum ;; break
esac ;;
esac
done
} }
#测试菜单 #测试菜单
testcommand(){ testcommand(){
echo "$crashcore" | grep -q 'singbox' && config_path=${JSONSDIR}/config.json || config_path=${YAMLSDIR}/config.yaml echo "$crashcore" | grep -q 'singbox' && config_path=${JSONSDIR}/config.json || config_path=${YAMLSDIR}/config.yaml