mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
~Add i18n support (only menu.sh)
This commit is contained in:
85
scripts/lang/chs/menu.lang
Normal file
85
scripts/lang/chs/menu.lang
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# ===== 通用提示 =====
|
||||||
|
MENU_ERR_INPUT="请输入正确的字母或数字!"
|
||||||
|
|
||||||
|
MENU_RESTART_NOTICE="检测到已变更的内容,请重启服务!"
|
||||||
|
MENU_RESTART_ASK="是否现在重启服务?(1/0) > "
|
||||||
|
|
||||||
|
MENU_PORT_CONFLICT_TITLE="检测到端口被以下进程占用!内核可能无法正常启动!"
|
||||||
|
MENU_PORT_CONFLICT_HINT="请修改默认端口配置!"
|
||||||
|
|
||||||
|
MENU_CORE_LOADED_OK="内核加载完成!"
|
||||||
|
MENU_CORE_LOADED_BAD="检测到不可用的内核文件!可能是文件受损或CPU架构不匹配!"
|
||||||
|
MENU_CORE_REMOVED="内核文件已移除,请认真检查后重新上传!"
|
||||||
|
|
||||||
|
MENU_CFG_LOADED_OK="配置文件加载完成!"
|
||||||
|
|
||||||
|
MENU_OVERRIDE_WARN="你已经禁用了配置文件覆写功能,这会导致大量脚本功能无法使用!"
|
||||||
|
MENU_OVERRIDE_ASK="是否取消禁用?"
|
||||||
|
|
||||||
|
# ===== 欢迎与状态 =====
|
||||||
|
MENU_WELCOME="欢迎使用ShellCrash!"
|
||||||
|
MENU_VERSION_LABEL="版本:"
|
||||||
|
|
||||||
|
MENU_RUN_ON="正在运行"
|
||||||
|
MENU_RUN_SET="已设置"
|
||||||
|
MENU_RUN_OFF="没有运行"
|
||||||
|
|
||||||
|
MENU_IP_DF="设备IP地址"
|
||||||
|
|
||||||
|
MENU_AUTOSTART_ON="已设置开机启动!"
|
||||||
|
MENU_AUTOSTART_OFF="未设置开机启动!"
|
||||||
|
MENU_AUTOSTART_DEBUG="并处于debug状态!"
|
||||||
|
|
||||||
|
MENU_MEM_USED="当前内存占用:"
|
||||||
|
MENU_RUNNING_TIME="已运行:"
|
||||||
|
|
||||||
|
MENU_TG_CHANNEL="TG频道:"
|
||||||
|
MENU_TG_URL="https://t.me/ShellClash"
|
||||||
|
|
||||||
|
# ===== /tmp 文件检测 =====
|
||||||
|
MENU_TMP_CORE_FOUND="发现可用的内核文件:"
|
||||||
|
MENU_TMP_CORE_ASK="是否加载(会停止当前服务)?"
|
||||||
|
|
||||||
|
MENU_TMP_CFG_FOUND="发现内核配置文件:"
|
||||||
|
MENU_TMP_CFG_ASK="是否加载为配置文件?(1/0) > "
|
||||||
|
|
||||||
|
MENU_MAIN_1="启动/重启服务"
|
||||||
|
MENU_MAIN_2="功能设置"
|
||||||
|
MENU_MAIN_3="停止服务"
|
||||||
|
MENU_MAIN_4="启动设置"
|
||||||
|
MENU_MAIN_5="自动任务"
|
||||||
|
MENU_MAIN_6="配置文件管理"
|
||||||
|
MENU_MAIN_7="访问与控制"
|
||||||
|
MENU_MAIN_8="工具与优化"
|
||||||
|
MENU_MAIN_9="更新与支持"
|
||||||
|
MENU_MAIN_0="退出脚本"
|
||||||
|
|
||||||
|
MENU_MAIN_PROMPT="请输入对应数字 > "
|
||||||
|
|
||||||
|
# ===== 服务操作 =====
|
||||||
|
MENU_SERVICE_STOPPED="服务已停止!"
|
||||||
|
|
||||||
|
# ===== 测试 / 调试 =====
|
||||||
|
MENU_TEST_RUNNING="正在测试运行!如发现错误请截图后前往咨询"
|
||||||
|
MENU_TEST_DONE_OK="测试完成!没有发现问题,请重新启动服务~"
|
||||||
|
MENU_TEST_DONE_FAIL="测试完成!"
|
||||||
|
MENU_TEST_LOG_HINT="完整执行记录请查看:"
|
||||||
|
|
||||||
|
MENU_ERROR_FOUND="发现错误:"
|
||||||
|
|
||||||
|
# ===== 命令行帮助 =====
|
||||||
|
MENU_CLI_WELCOME="欢迎使用ShellCrash"
|
||||||
|
|
||||||
|
MENU_CLI_TEST="测试模式"
|
||||||
|
MENU_CLI_HELP="帮助列表"
|
||||||
|
MENU_CLI_UNINSTALL="卸载脚本"
|
||||||
|
MENU_CLI_INIT="初始化脚本"
|
||||||
|
MENU_CLI_DEBUG="测试运行"
|
||||||
|
|
||||||
|
MENU_CLI_START="启动服务"
|
||||||
|
MENU_CLI_STOP="停止服务"
|
||||||
|
MENU_CLI_BOOT_INIT="开机初始化"
|
||||||
|
|
||||||
|
MENU_HELP_ONLINE="在线求助:"
|
||||||
|
MENU_HELP_BLOG="官方博客:"
|
||||||
|
MENU_HELP_GITHUB="发布页面:"
|
||||||
8
scripts/libs/i18n.sh
Normal file
8
scripts/libs/i18n.sh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
load_lang() {
|
||||||
|
i18n=$(cat "$CRASHDIR"/configs/i18n.cfg 2>/dev/null)
|
||||||
|
[ -z "$i18n" ] && i18n=chs
|
||||||
|
|
||||||
|
file="$CRASHDIR/lang/$i18n/$1.lang"
|
||||||
|
[ -s "$file" ] && . "$file"
|
||||||
|
}
|
||||||
142
scripts/menu.sh
142
scripts/menu.sh
@@ -6,6 +6,7 @@ CRASHDIR=$(
|
|||||||
pwd
|
pwd
|
||||||
)
|
)
|
||||||
CFG_PATH="$CRASHDIR"/configs/ShellCrash.cfg
|
CFG_PATH="$CRASHDIR"/configs/ShellCrash.cfg
|
||||||
|
|
||||||
# 加载执行目录,失败则初始化
|
# 加载执行目录,失败则初始化
|
||||||
. "$CRASHDIR"/libs/get_config.sh
|
. "$CRASHDIR"/libs/get_config.sh
|
||||||
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . "$CRASHDIR"/init.sh >/dev/null 2>&1
|
||||||
@@ -15,28 +16,35 @@ CFG_PATH="$CRASHDIR"/configs/ShellCrash.cfg
|
|||||||
. "$CRASHDIR"/libs/set_config.sh
|
. "$CRASHDIR"/libs/set_config.sh
|
||||||
. "$CRASHDIR"/libs/check_cmd.sh
|
. "$CRASHDIR"/libs/check_cmd.sh
|
||||||
. "$CRASHDIR"/libs/check_autostart.sh
|
. "$CRASHDIR"/libs/check_autostart.sh
|
||||||
|
. "$CRASHDIR"/libs/i18n.sh
|
||||||
. "$CRASHDIR"/menus/1_start.sh
|
. "$CRASHDIR"/menus/1_start.sh
|
||||||
. "$CRASHDIR"/menus/running_status.sh
|
. "$CRASHDIR"/menus/running_status.sh
|
||||||
|
|
||||||
|
# 加载语言
|
||||||
|
load_lang common
|
||||||
|
load_lang menu
|
||||||
|
|
||||||
errornum() {
|
errornum() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m请输入正确的字母或数字!\033[0m"
|
echo -e "\033[31m$MENU_ERR_INPUT\033[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
checkrestart() {
|
checkrestart() {
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[32m检测到已变更的内容,请重启服务!\033[0m"
|
echo -e "\033[32m$MENU_RESTART_NOTICE\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
read -p "是否现在重启服务?(1/0) > " res
|
read -p "$MENU_RESTART_ASK" res
|
||||||
[ "$res" = 1 ] && start_service
|
[ "$res" = 1 ] && start_service
|
||||||
}
|
}
|
||||||
|
|
||||||
checkport() { #检查端口冲突
|
checkport() { #检查端口冲突
|
||||||
for portx in $dns_port $mix_port $redir_port $((redir_port + 1)) $db_port; do
|
for portx in $dns_port $mix_port $redir_port $((redir_port + 1)) $db_port; do
|
||||||
if [ -n "$(netstat -ntul 2>&1 | grep ':$portx ')" ]; then
|
if [ -n "$(netstat -ntul 2>&1 | grep ":$portx ")" ]; then
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "检测到端口【$portx】被以下进程占用!内核可能无法正常启动!\033[33m"
|
echo -e "【$portx】: $MENU_PORT_CONFLICT_TITLE"
|
||||||
echo $(netstat -ntul | grep :$portx | head -n 1)
|
echo -e "\033[0m$(netstat -ntul | grep ":$portx" | head -n 1)\033[0m"
|
||||||
echo -e "\033[0m-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[36m请修改默认端口配置!\033[0m"
|
echo -e "\033[36m$MENU_PORT_CONFLICT_HINT\033[0m"
|
||||||
. "$CRASHDIR"/menus/2_settings.sh && set_adv_config
|
. "$CRASHDIR"/menus/2_settings.sh && set_adv_config
|
||||||
. "$CRASHDIR"/libs/get_config.sh
|
. "$CRASHDIR"/libs/get_config.sh
|
||||||
checkport
|
checkport
|
||||||
@@ -46,18 +54,19 @@ checkport() { #检查端口冲突
|
|||||||
ckstatus() { #脚本启动前检查
|
ckstatus() { #脚本启动前检查
|
||||||
#检查脚本配置文件
|
#检查脚本配置文件
|
||||||
if [ -f "$CFG_PATH" ]; then
|
if [ -f "$CFG_PATH" ]; then
|
||||||
[ -n "$(awk 'a[$0]++' $CFG_PATH)" ] && awk '!a[$0]++' "$CFG_PATH" >"$CFG_PATH" #检查重复行并去除
|
[ -n "$(awk 'a[$0]++' "$CFG_PATH")" ] && awk '!a[$0]++' "$CFG_PATH" >"$CFG_PATH"
|
||||||
else
|
else
|
||||||
. "$CRASHDIR"/init.sh >/dev/null 2>&1
|
. "$CRASHDIR"/init.sh >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
versionsh=$(cat "$CRASHDIR"/version)
|
versionsh=$(cat "$CRASHDIR"/version)
|
||||||
[ -n "$versionsh" ] && versionsh_l=$versionsh
|
[ -n "$versionsh" ] && versionsh_l=$versionsh
|
||||||
[ -z "$redir_mod" ] && redir_mod=纯净模式
|
[ -z "$redir_mod" ] && redir_mod="纯净模式"
|
||||||
#获取本机host地址
|
#获取本机host地址
|
||||||
[ -z "$host" ] && host=$(ubus call network.interface.lan status 2>&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
|
[ -z "$host" ] && host=$(ubus call network.interface.lan status 2>&1 | grep \"address\" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
|
||||||
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'lan' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
|
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep 'lan' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
|
||||||
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
|
[ -z "$host" ] && host=$(ip a 2>&1 | grep -w 'inet' | grep 'global' | grep -E ' 1(92|0|72)\.' | sed 's/.*inet.//g' | sed 's/\/[0-9][0-9].*$//g' | head -n 1)
|
||||||
[ -z "$host" ] && host='设备IP地址'
|
[ -z "$host" ] && host='$MENU_IP_DF'
|
||||||
#dashboard目录位置
|
#dashboard目录位置
|
||||||
if [ -f /www/clash/index.html ]; then
|
if [ -f /www/clash/index.html ]; then
|
||||||
dbdir=/www/clash
|
dbdir=/www/clash
|
||||||
@@ -66,37 +75,37 @@ ckstatus() { #脚本启动前检查
|
|||||||
dbdir="$CRASHDIR"/ui
|
dbdir="$CRASHDIR"/ui
|
||||||
hostdir=":$db_port/ui"
|
hostdir=":$db_port/ui"
|
||||||
fi
|
fi
|
||||||
#开机自启检测
|
|
||||||
if check_autostart; then
|
if check_autostart; then
|
||||||
auto="\033[32m已设置开机启动!\033[0m"
|
auto="\033[32m$MENU_AUTOSTART_ON\033[0m"
|
||||||
auto1="\033[36m禁用\033[0mShellCrash开机启动"
|
|
||||||
else
|
else
|
||||||
auto="\033[31m未设置开机启动!\033[0m"
|
auto="\033[31m$MENU_AUTOSTART_OFF\033[0m"
|
||||||
auto1="\033[36m允许\033[0mShellCrash开机启动"
|
|
||||||
fi
|
fi
|
||||||
#获取运行状态
|
|
||||||
PID=$(pidof CrashCore | awk '{print $NF}')
|
PID=$(pidof CrashCore | awk '{print $NF}')
|
||||||
if [ -n "$PID" ]; then
|
if [ -n "$PID" ]; then
|
||||||
run="\033[32m正在运行($redir_mod)\033[0m"
|
run="\033[32m$MENU_RUN_ON($redir_mod)\033[0m"
|
||||||
running_status
|
running_status
|
||||||
elif [ "$firewall_area" = 5 ] && [ -n "$(ip route list table 100)" ]; then
|
elif [ "$firewall_area" = 5 ] && [ -n "$(ip route list table 100)" ]; then
|
||||||
run="\033[32m已设置($redir_mod)\033[0m"
|
run="\033[32m$MENU_RUN_SET($redir_mod)\033[0m"
|
||||||
else
|
else
|
||||||
run="\033[31m没有运行($redir_mod)\033[0m"
|
run="\033[31m$MENU_RUN_OFF($redir_mod)\033[0m"
|
||||||
#检测系统端口占用
|
#检测系统端口占用
|
||||||
checkport
|
checkport
|
||||||
fi
|
fi
|
||||||
corename=$(echo $crashcore | sed 's/singboxr/SingBoxR/' | sed 's/singbox/SingBox/' | sed 's/clash/Clash/' | sed 's/meta/Mihomo/')
|
corename=$(echo $crashcore | sed 's/singboxr/SingBoxR/' | sed 's/singbox/SingBox/' | sed 's/clash/Clash/' | sed 's/meta/Mihomo/')
|
||||||
[ "$firewall_area" = 5 ] && corename='转发'
|
#[ "$firewall_area" = 5 ] && corename='转发'
|
||||||
[ -f "$TMPDIR"/debug.log -o -f "$CRASHDIR"/debug.log -a -n "$PID" ] && auto="\033[33m并处于debug状态!\033[0m"
|
[ -f "$TMPDIR"/debug.log -o -f "$CRASHDIR"/debug.log -a -n "$PID" ] && auto="\033[33m$MENU_AUTOSTART_DEBUG\033[0m"
|
||||||
#输出状态
|
#输出状态
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[30;46m欢迎使用ShellCrash!\033[0m 版本:$versionsh_l"
|
echo -e "\033[30;46m$MENU_WELCOME\033[0m $MENU_VERSION_LABEL$versionsh_l"
|
||||||
echo -e "$corename服务$run,$auto"
|
echo -e "$corename $run,$auto"
|
||||||
|
|
||||||
if [ -n "$PID" ]; then
|
if [ -n "$PID" ]; then
|
||||||
echo -e "当前内存占用:\033[44m"$VmRSS"\033[0m,已运行:\033[46;30m"$day"\033[44;37m"$time"\033[0m"
|
echo -e "$MENU_MEM_USED \033[44m$VmRSS\033[0m,$MENU_RUNNING_TIME \033[46;30m$day\033[44;37m$time\033[0m"
|
||||||
fi
|
fi
|
||||||
echo -e "TG频道:\033[36;4mhttps://t.me/ShellClash\033[0m"
|
|
||||||
|
echo -e "$MENU_TG_CHANNEL \033[36;4m$MENU_TG_URL\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
#检查新手引导
|
#检查新手引导
|
||||||
if [ -z "$userguide" ]; then
|
if [ -z "$userguide" ]; then
|
||||||
@@ -107,19 +116,19 @@ ckstatus() { #脚本启动前检查
|
|||||||
[ ! -x "$CRASHDIR"/start.sh ] && chmod +x "$CRASHDIR"/start.sh
|
[ ! -x "$CRASHDIR"/start.sh ] && chmod +x "$CRASHDIR"/start.sh
|
||||||
#检查/tmp内核文件
|
#检查/tmp内核文件
|
||||||
for file in $(ls /tmp | grep -v [/$] | grep -v ' ' | grep -Ev ".*(zip|7z|tar)$" | grep -iE 'CrashCore|^clash$|^clash-linux.*|^mihomo.*|^sing.*box|meta.*'); do
|
for file in $(ls /tmp | grep -v [/$] | grep -v ' ' | grep -Ev ".*(zip|7z|tar)$" | grep -iE 'CrashCore|^clash$|^clash-linux.*|^mihomo.*|^sing.*box|meta.*'); do
|
||||||
echo -e "发现可用的内核文件: \033[36m/tmp/$file\033[0m "
|
echo -e "$MENU_TMP_CORE_FOUND \033[36m/tmp/$file\033[0m "
|
||||||
read -p "是否加载(会停止当前服务)?(1/0) > " res
|
read -p "$MENU_TMP_CORE_ASK(1/0) > " res
|
||||||
[ "$res" = 1 ] && {
|
[ "$res" = 1 ] && {
|
||||||
zip_type=$(echo "$file" | grep -oE 'tar.gz$|upx$|gz$')
|
zip_type=$(echo "$file" | grep -oE 'tar.gz$|upx$|gz$')
|
||||||
. "$CRASHDIR"/menus/9_upgrade.sh && setcoretype
|
. "$CRASHDIR"/menus/9_upgrade.sh && setcoretype
|
||||||
. "$CRASHDIR"/libs/core_tools.sh && core_check "/tmp/$file"
|
. "$CRASHDIR"/libs/core_tools.sh && core_check "/tmp/$file"
|
||||||
if [ "$?" = 0 ]; then
|
if [ "$?" = 0 ]; then
|
||||||
echo -e "\033[32m内核加载完成!\033[0m "
|
echo -e "\033[32m$MENU_CORE_LOADED_OK\033[0m "
|
||||||
switch_core
|
switch_core
|
||||||
else
|
else
|
||||||
echo -e "\033[33m检测到不可用的内核文件!可能是文件受损或CPU架构不匹配!\033[0m"
|
echo -e "\033[33m$MENU_CORE_LOADED_BAD033[0m"
|
||||||
rm -rf /tmp/"$file"
|
rm -rf /tmp/"$file"
|
||||||
echo -e "\033[33m内核文件已移除,请认真检查后重新上传!\033[0m"
|
echo -e "\033[33m$MENU_CORE_REMOVED\033[0m"
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
@@ -128,44 +137,43 @@ ckstatus() { #脚本启动前检查
|
|||||||
#检查/tmp配置文件
|
#检查/tmp配置文件
|
||||||
for file in $(ls /tmp | grep -v [/$] | grep -v ' ' | grep -iE 'config.yaml$|config.yml$|config.json$'); do
|
for file in $(ls /tmp | grep -v [/$] | grep -v ' ' | grep -iE 'config.yaml$|config.yml$|config.json$'); do
|
||||||
tmp_file=/tmp/$file
|
tmp_file=/tmp/$file
|
||||||
echo -e "发现内核配置文件: \033[36m/tmp/$file\033[0m "
|
echo -e "$MENU_TMP_CFG_FOUND \033[36m/tmp/$file\033[0m "
|
||||||
read -p "是否加载为$crashcore的配置文件?(1/0) > " res
|
read -p "$MENU_TMP_CFG_ASK(1/0) > " res
|
||||||
[ "$res" = 1 ] && {
|
[ "$res" = 1 ] && {
|
||||||
if [ -n "$(echo /tmp/$file | grep -iE '.json$')" ]; then
|
if [ -n "$(echo /tmp/$file | grep -iE '.json$')" ]; then
|
||||||
mv -f /tmp/$file "$CRASHDIR"/jsons/config.json
|
mv -f /tmp/$file "$CRASHDIR"/jsons/config.json
|
||||||
else
|
else
|
||||||
mv -f /tmp/$file "$CRASHDIR"/yamls/config.yaml
|
mv -f /tmp/$file "$CRASHDIR"/yamls/config.yaml
|
||||||
fi
|
fi
|
||||||
echo -e "\033[32m配置文件加载完成!\033[0m "
|
echo -e "\033[32m$MENU_CFG_LOADED_OK\033[0m "
|
||||||
sleep 1
|
sleep 1
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
#检查禁用配置覆写
|
#检查禁用配置覆写
|
||||||
[ "$disoverride" = "1" ] && {
|
[ "$disoverride" = "1" ] && {
|
||||||
echo -e "\033[33m你已经禁用了配置文件覆写功能,这会导致大量脚本功能无法使用!\033[0m "
|
echo -e "\033[33m$MENU_OVERRIDE_WARN\033[0m "
|
||||||
read -p "是否取消禁用?(1/0) > " res
|
read -p "$MENU_OVERRIDE_ASK(1/0) > " res
|
||||||
[ "$res" = 1 ] && unset disoverride && setconfig disoverride
|
[ "$res" = 1 ] && unset disoverride && setconfig disoverride
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#主菜单
|
|
||||||
main_menu() {
|
main_menu() {
|
||||||
#############################
|
|
||||||
ckstatus
|
ckstatus
|
||||||
#############################
|
|
||||||
echo -e " 1 \033[32m启动/重启服务\033[0m"
|
echo -e " 1 \033[32m$MENU_MAIN_1\033[0m"
|
||||||
echo -e " 2 \033[36m功能设置\033[0m"
|
echo -e " 2 \033[36m$MENU_MAIN_2\033[0m"
|
||||||
echo -e " 3 \033[31m停止服务\033[0m"
|
echo -e " 3 \033[31m$MENU_MAIN_3\033[0m"
|
||||||
echo -e " 4 \033[33m启动设置\033[0m"
|
echo -e " 4 \033[33m$MENU_MAIN_4\033[0m"
|
||||||
echo -e " 5 设置\033[32m自动任务\033[0m"
|
echo -e " 5 \033[32m$MENU_MAIN_5\033[0m"
|
||||||
echo -e " 6 管理\033[36m配置文件\033[0m"
|
echo -e " 6 \033[36m$MENU_MAIN_6\033[0m"
|
||||||
echo -e " 7 \033[33m访问与控制\033[0m"
|
echo -e " 7 \033[33m$MENU_MAIN_7\033[0m"
|
||||||
echo -e " 8 \033[0m工具与优化\033[0m"
|
echo -e " 8 $MENU_MAIN_8"
|
||||||
echo -e " 9 \033[32m更新与支持\033[0m"
|
echo -e " 9 \033[32m$MENU_MAIN_9\033[0m"
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e " 0 \033[0m退出脚本\033[0m"
|
echo -e " 0 $MENU_MAIN_0"
|
||||||
read -p "请输入对应数字 > " num
|
|
||||||
|
read -p "$MENU_MAIN_PROMPT" num
|
||||||
|
|
||||||
case "$num" in
|
case "$num" in
|
||||||
0)
|
0)
|
||||||
@@ -189,7 +197,7 @@ main_menu() {
|
|||||||
"$CRASHDIR"/start.sh stop
|
"$CRASHDIR"/start.sh stop
|
||||||
sleep 1
|
sleep 1
|
||||||
echo "-----------------------------------------------"
|
echo "-----------------------------------------------"
|
||||||
echo -e "\033[31m$corename服务已停止!\033[0m"
|
echo -e "\033[31m$corename$MENU_SERVICE_STOPPED\033[0m"
|
||||||
main_menu
|
main_menu
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
@@ -255,21 +263,21 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
-d)
|
-d)
|
||||||
shtype=sh && [ -n "$(ls -l /bin/sh | grep -o dash)" ] && shtype=bash
|
shtype=sh && [ -n "$(ls -l /bin/sh | grep -o dash)" ] && shtype=bash
|
||||||
echo -e "正在测试运行!如发现错误请截图后前往\033[32;4mt.me/ShellClash\033[0m咨询"
|
echo -e "$MENU_TEST_RUNNING\033[32;4mt.me/ShellClash\033[0m"
|
||||||
$shtype "$CRASHDIR"/start.sh debug >/dev/null 2>"$TMPDIR"/debug_sh_bug.log
|
$shtype "$CRASHDIR"/start.sh debug >/dev/null 2>"$TMPDIR"/debug_sh_bug.log
|
||||||
$shtype -x "$CRASHDIR"/start.sh debug >/dev/null 2>"$TMPDIR"/debug_sh.log
|
$shtype -x "$CRASHDIR"/start.sh debug >/dev/null 2>"$TMPDIR"/debug_sh.log
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
cat "$TMPDIR"/debug_sh_bug.log | grep 'start\.sh' >"$TMPDIR"/sh_bug
|
cat "$TMPDIR"/debug_sh_bug.log | grep 'start\.sh' >"$TMPDIR"/sh_bug
|
||||||
if [ -s "$TMPDIR"/sh_bug ]; then
|
if [ -s "$TMPDIR"/sh_bug ]; then
|
||||||
while read line; do
|
while read line; do
|
||||||
echo -e "发现错误:\033[33;4m$line\033[0m"
|
echo -e "$MENU_ERROR_FOUND\033[33;4m$line\033[0m"
|
||||||
grep -A 1 -B 3 "$line" "$TMPDIR"/debug_sh.log
|
grep -A 1 -B 3 "$line" "$TMPDIR"/debug_sh.log
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
done <"$TMPDIR"/sh_bug
|
done <"$TMPDIR"/sh_bug
|
||||||
rm -rf "$TMPDIR"/sh_bug
|
rm -rf "$TMPDIR"/sh_bug
|
||||||
echo -e "\033[32m测试完成!\033[0m完整执行记录请查看:\033[36m$TMPDIR/debug_sh.log\033[0m"
|
echo -e "\033[32m$MENU_TEST_DONE_FAIL\033[0m$MENU_TEST_LOG_HINT\033[36m$TMPDIR/debug_sh.log\033[0m"
|
||||||
else
|
else
|
||||||
echo -e "\033[32m测试完成!没有发现问题,请重新启动服务~\033[0m"
|
echo -e "\033[32m$MENU_TEST_DONE_OK\033[0m"
|
||||||
rm -rf "$TMPDIR"/debug_sh.log
|
rm -rf "$TMPDIR"/debug_sh.log
|
||||||
fi
|
fi
|
||||||
"$CRASHDIR"/start.sh stop
|
"$CRASHDIR"/start.sh stop
|
||||||
@@ -279,21 +287,21 @@ case "$1" in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
echo "欢迎使用ShellCrash"
|
echo "$MENU_CLI_WELCOME"
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
echo " -t 测试模式"
|
echo " -t $MENU_CLI_TEST"
|
||||||
echo " -h 帮助列表"
|
echo " -h $MENU_CLI_HELP"
|
||||||
echo " -u 卸载脚本"
|
echo " -u $MENU_CLI_UNINSTALL"
|
||||||
echo " -i 初始化脚本"
|
echo " -i $MENU_CLI_INIT"
|
||||||
echo " -d 测试运行"
|
echo " -d $MENU_CLI_DEBUG"
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
echo " crash -s start 启动服务"
|
echo " crash -s start $MENU_CLI_START"
|
||||||
echo " crash -s stop 停止服务"
|
echo " crash -s stop $MENU_CLI_STOP"
|
||||||
echo " $CRASHDIR/start.sh init 开机初始化"
|
echo " $CRASHDIR/start.sh init $MENU_CLI_BOOT_INIT"
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
echo "在线求助:t.me/ShellClash"
|
echo "$MENU_HELP_ONLINE t.me/ShellClash"
|
||||||
echo "官方博客:juewuy.github.io"
|
echo "$MENU_HELP_BLOG juewuy.github.io"
|
||||||
echo "发布页面:github.com/juewuy/ShellCrash"
|
echo "$MENU_HELP_GITHUB github.com/juewuy/ShellCrash"
|
||||||
echo -----------------------------------------
|
echo -----------------------------------------
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user