Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
92674712
提交
92674712
authored
12月 17, 2025
作者:
陈泽健
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into develop
上级
c71a2aa9
b4c314dd
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
264 行增加
和
100 行删除
+264
-100
fix_chinese_linebreaks.sh
辅助工具/脚本工具/常见问题处理/fix_chinese_linebreaks.sh
+32
-0
issue_handler.sh
辅助工具/脚本工具/常见问题处理/issue_handler.sh
+232
-100
没有找到文件。
辅助工具/脚本工具/常见问题处理/fix_chinese_linebreaks.sh
0 → 100644
浏览文件 @
92674712
#!/bin/bash
# 修复中文换行问题的专用工具脚本
SCRIPT_PATH
=
"issue_handler.sh"
echo
"开始修复中文换行问题..."
# 备份原文件
cp
"
$SCRIPT_PATH
"
"
${
SCRIPT_PATH
}
.bak"
echo
"已创建备份文件:
${
SCRIPT_PATH
}
.bak"
# 修复Windows换行符问题
sed
-i
's/\r$//'
"
$SCRIPT_PATH
"
# 修复可能的编码问题
if
command
-v
dos2unix
>
/dev/null 2>&1
;
then
dos2unix
"
$SCRIPT_PATH
"
echo
"使用dos2unix处理文件"
elif
command
-v
fromdos
>
/dev/null 2>&1
;
then
fromdos
"
$SCRIPT_PATH
"
echo
"使用fromdos处理文件"
else
echo
"未找到dos2unix或fromdos工具,跳过DOS格式转换"
fi
# 确保文件以Unix换行符结尾
tail
-c1
<
"
$SCRIPT_PATH
"
|
read
-r
_
||
echo
""
>>
"
$SCRIPT_PATH
"
echo
"中文换行问题修复完成!"
echo
"请测试运行脚本: bash
$SCRIPT_PATH
"
\ No newline at end of file
辅助工具/脚本工具/常见问题处理/issue_handler.sh
浏览文件 @
92674712
#!/bin/bash
#!/bin/bash
# 设置标准环境变量,避免"参数列表过长"问题
export
LANG
=
C
export
LC_ALL
=
C
# 检查并修复执行环境问题
fix_execution_environment
()
{
# 检查脚本换行符
if
command
-v
dos2unix
>
/dev/null 2>&1
;
then
# 检查是否需要修复换行符
if
head
-n
10
"
$0
"
|
grep
-q
$'
\r
'
;
then
echo
"检测到Windows换行符,正在修复..."
dos2unix
"
$0
"
2>/dev/null
||
true
echo
"换行符已修复,重新执行脚本..."
exec
bash
"
$0
"
"
$@
"
exit
$?
fi
fi
# 检查BOM标记
if
head
-c
3
"
$0
"
|
od
-An
-tx1
|
tr
-d
' '
|
grep
-q
'^efbbbf'
;
then
echo
"检测到BOM标记,正在处理..."
tail
-c
+4
"
$0
"
>
"/tmp/issue_handler_fixed.sh"
chmod
+x
"/tmp/issue_handler_fixed.sh"
echo
"BOM标记已处理,重新执行脚本..."
exec
bash
"/tmp/issue_handler_fixed.sh"
"
$@
"
exit
$?
fi
}
# 执行环境检查和修复
fix_execution_environment
"
$@
"
# 检查并修复环境变量"参数列表过长"问题
fix_env_variable_issues
()
{
# 检查环境变量长度
if
[[
${#
LANG
}
-gt
100
]]
||
[[
${#
LC_ALL
}
-gt
100
]]
;
then
echo
"检测到环境变量过长,正在修复..."
export
LANG
=
C
export
LC_ALL
=
C
echo
"环境变量已重置"
fi
# 检查环境变量中是否包含空字符
if
echo
"
$LANG
"
|
grep
-q
$'
\0
'
;
then
echo
"检测到LANG变量包含空字符,正在修复..."
export
LANG
=
C
fi
if
echo
"
$LC_ALL
"
|
grep
-q
$'
\0
'
;
then
echo
"检测到LC_ALL变量包含空字符,正在修复..."
export
LC_ALL
=
C
fi
}
# 处理可能存在的中文换行问题
remove_chinese_newlines
()
{
local
file
=
"
$1
"
# 检查并移除中文文本中的意外换行符
if
[[
"
$OSTYPE
"
==
"msys"
]]
||
[[
"
$OSTYPE
"
==
"win32"
]]
;
then
# Windows环境下可能存在的换行问题处理
sed
-i
's/\r$//'
"
$file
"
2>/dev/null
||
true
fi
}
# 常见问题处理脚本
# 常见问题处理脚本
# 根据PRD_问题处理文档.md中描述的问题和解决方案,提供自动化处理功能
# 根据PRD_问题处理文档.md中描述的问题和解决方案,提供自动化处理功能
...
@@ -12,31 +76,36 @@ PURPLE='\033[0;35m'
...
@@ -12,31 +76,36 @@ PURPLE='\033[0;35m'
CYAN
=
'\033[0;36m'
CYAN
=
'\033[0;36m'
NC
=
'\033[0m'
# No Color
NC
=
'\033[0m'
# No Color
# 日志文件路径
# 日志文件路径
LOG_FILE
=
"
$(
dirname
"
$0
"
)
/issue_handler.log"
LOG_FILE
=
"
$(
dirname
"
$0
"
)
/issue_handler.log"
# 日志函数
# 日志函数
log_info
()
{
log_info
()
{
local
message
=
"[INFO]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
local
message
=
"[INFO]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
echo
-e
"
${
GREEN
}
[INFO]
${
NC
}
$1
"
# 处理可能的中文字符显示问题
echo
-e
"
${
GREEN
}
[INFO]
${
NC
}
$1
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"[INFO]
$1
"
echo
"
$message
"
>>
"
$LOG_FILE
"
echo
"
$message
"
>>
"
$LOG_FILE
"
}
}
log_warn
()
{
log_warn
()
{
local
message
=
"[WARN]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
local
message
=
"[WARN]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
echo
-e
"
${
YELLOW
}
[WARN]
${
NC
}
$1
"
# 处理可能的中文字符显示问题
echo
-e
"
${
YELLOW
}
[WARN]
${
NC
}
$1
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"[WARN]
$1
"
echo
"
$message
"
>>
"
$LOG_FILE
"
echo
"
$message
"
>>
"
$LOG_FILE
"
}
}
log_error
()
{
log_error
()
{
local
message
=
"[ERROR]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
local
message
=
"[ERROR]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
echo
-e
"
${
RED
}
[ERROR]
${
NC
}
$1
"
# 处理可能的中文字符显示问题
echo
-e
"
${
RED
}
[ERROR]
${
NC
}
$1
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"[ERROR]
$1
"
echo
"
$message
"
>>
"
$LOG_FILE
"
echo
"
$message
"
>>
"
$LOG_FILE
"
}
}
log_debug
()
{
log_debug
()
{
local
message
=
"[DEBUG]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
local
message
=
"[DEBUG]
$(
date
'+%Y-%m-%d %H:%M:%S'
)
$1
"
echo
-e
"
${
BLUE
}
[DEBUG]
${
NC
}
$1
"
# 处理可能的中文字符显示问题
echo
-e
"
${
BLUE
}
[DEBUG]
${
NC
}
$1
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"[DEBUG]
$1
"
echo
"
$message
"
>>
"
$LOG_FILE
"
echo
"
$message
"
>>
"
$LOG_FILE
"
}
}
...
@@ -46,22 +115,24 @@ show_operation_summary() {
...
@@ -46,22 +115,24 @@ show_operation_summary() {
local
status
=
"
$2
"
local
status
=
"
$2
"
echo
echo
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
-e
"
${
CYAN
}
操作完成摘要
${
NC
}
"
echo
-e
"
${
CYAN
}
操作完成摘要
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"操作完成摘要"
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
-e
"操作名称:
${
PURPLE
}${
operation_name
}${
NC
}
"
echo
-e
"操作名称:
${
PURPLE
}${
operation_name
}${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"操作名称:
${
operation_name
}
"
echo
-e
"操作状态:
$status
"
echo
-e
"操作状态:
$status
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"操作状态:
$status
"
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
echo
-e
"
${
CYAN
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
echo
}
}
# 检测平台类型
# 检测平台类型
detect_platform
()
{
detect_platform
()
{
if
[
-d
"/data"
]
;
then
# 检查是否存在新统一平台目录
log_debug
"检测到/data目录,判定为新统一平台"
if
[
-d
"/data/services/api"
]
;
then
log_debug
"检测到新统一平台目录"
echo
"new"
echo
"new"
elif
[
-d
"/var/www"
]
;
then
# 检查是否存在标准版平台目录
log_debug
"检测到/var/www目录,判定为标准版平台"
elif
[
-d
"/var/www/java"
]
;
then
log_debug
"检测到标准版平台目录"
echo
"standard"
echo
"standard"
else
else
log_debug
"未检测到特定平台目录,返回unknown"
log_debug
"未检测到特定平台目录,返回unknown"
...
@@ -74,7 +145,8 @@ confirm_action() {
...
@@ -74,7 +145,8 @@ confirm_action() {
local
message
=
"
$1
"
local
message
=
"
$1
"
local
response
local
response
echo
-e
-n
"
${
YELLOW
}
$message
(y/N):
${
NC
}
"
# 处理中文字符显示问题
echo
-e
-n
"
${
YELLOW
}
$message
(y/N):
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
-n
"
$message
(y/N): "
read
response
read
response
case
"
$response
"
in
case
"
$response
"
in
...
@@ -1857,14 +1929,16 @@ show_menu() {
...
@@ -1857,14 +1929,16 @@ show_menu() {
;;
;;
esac
esac
clear
# 清理屏幕并处理可能的字符显示问题
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
clear 2>/dev/null
||
printf
'\033[2J\033[H'
echo
-e
"
${
BLUE
}
常见问题处理工具
${
NC
}
"
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
-e
"
${
BLUE
}
常见问题处理工具
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
" 常见问题处理工具"
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
echo
echo
-e
"
${
YELLOW
}
当前平台类型:
$platform_name
${
NC
}
"
echo
-e
"
${
YELLOW
}
当前平台类型:
$platform_name
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"当前平台类型:
$platform_name
"
echo
echo
echo
-e
"
${
GREEN
}
主功能菜单:
${
NC
}
"
echo
-e
"
${
GREEN
}
主功能菜单:
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"主功能菜单:"
echo
" 1. 更新版本包"
echo
" 1. 更新版本包"
echo
" 1.1 更新预定系统对内后端包"
echo
" 1.1 更新预定系统对内后端包"
echo
" 1.2 更新预定系统对外后端包"
echo
" 1.2 更新预定系统对外后端包"
...
@@ -1900,7 +1974,7 @@ show_menu() {
...
@@ -1900,7 +1974,7 @@ show_menu() {
echo
echo
echo
" 0. 退出"
echo
" 0. 退出"
echo
echo
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
echo
-e
"
${
BLUE
}
===========================================
${
NC
}
"
| iconv
-f
UTF-8
-t
UTF-8//IGNORE 2>/dev/null
||
echo
"==========================================="
echo
echo
}
}
...
@@ -1921,7 +1995,8 @@ get_user_choice() {
...
@@ -1921,7 +1995,8 @@ get_user_choice() {
fi
fi
# 检查输入是否有效
# 检查输入是否有效
if
[[
"
$valid_choices
"
==
*
"
$choice
"
*
]]
;
then
# 使用更严格的验证方法,确保输入是一个独立的有效选项
if
[[
",
$valid_choices
,"
==
*
",
$choice
,"
*
]]
;
then
echo
"
$choice
"
echo
"
$choice
"
return
return
else
else
...
@@ -1930,15 +2005,13 @@ get_user_choice() {
...
@@ -1930,15 +2005,13 @@ get_user_choice() {
done
done
}
}
# 显示子菜单并获取选择
show_submenu
()
{
show_submenu
()
{
local
main_choice
=
"
$1
"
local
main_choice
=
$1
local
platform
=
"
$2
"
local
platform
=
$2
local
sub_choice
=
""
case
$main_choice
in
case
$main_choice
in
1
)
1
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [1.1-1.6, 或按回车全选]: "
"1.1,1.2,1.3,1.4,1.5,1.6
,
"
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [1.1-1.6, 或按回车全选]: "
"1.1,1.2,1.3,1.4,1.5,1.6"
)
log_info
"用户选择子操作:
$sub_choice
"
log_info
"用户选择子操作:
$sub_choice
"
case
$sub_choice
in
case
$sub_choice
in
...
@@ -1973,7 +2046,51 @@ show_submenu() {
...
@@ -1973,7 +2046,51 @@ show_submenu() {
update_frontend
"
$platform
"
update_frontend
"
$platform
"
update_backend
"
$platform
"
update_backend
"
$platform
"
update_ops_backend
"
$platform
"
update_ops_backend
"
$platform
"
update_ops_frontend
"
$platform
"
#!/bin/bash
# 日志函数
log_info
()
{
echo
-e
"
\0
33[32m[INFO]
$1
\0
33[0m"
}
log_warn
()
{
echo
-e
"
\0
33[33m[WARN]
$1
\0
33[0m"
}
log_error
()
{
echo
-e
"
\0
33[31m[ERROR]
$1
\0
33[0m"
}
# 交互式模式函数
interactive_mode
()
{
local
platform
=
$(
detect_platform
)
if
[
"
$platform
"
=
"unknown"
]
;
then
log_error
"无法检测到有效的平台类型"
exit
1
fi
log_info
"检测到平台类型:
$platform
"
local
main_choice
=
$(
get_user_choice
"请选择操作 [1-4]: "
"1,2,3,4"
)
log_info
"用户选择操作:
$main_choice
"
case
$main_choice
in
1
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [1.1-1.3]: "
"1.1,1.2,1.3"
)
log_info
"用户选择子操作:
$sub_choice
"
case
$sub_choice
in
1.1
)
log_info
"执行更新内部后端jar"
update_inner_backend_jar
"
$platform
"
;;
1.2
)
log_info
"执行更新外部后端jar"
update_external_backend_jar
"
$platform
"
;;
1.3
)
log_info
"执行更新前端"
update_frontend
"
$platform
"
;;
;;
*
)
*
)
log_error
"无效的选择:
$sub_choice
"
log_error
"无效的选择:
$sub_choice
"
...
@@ -1981,7 +2098,7 @@ show_submenu() {
...
@@ -1981,7 +2098,7 @@ show_submenu() {
esac
esac
;;
;;
2
)
2
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [2.1-2.3, 或按回车全选]: "
"2.1,2.2,2.3
,
"
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [2.1-2.3, 或按回车全选]: "
"2.1,2.2,2.3"
)
log_info
"用户选择子操作:
$sub_choice
"
log_info
"用户选择子操作:
$sub_choice
"
case
$sub_choice
in
case
$sub_choice
in
...
@@ -2008,6 +2125,10 @@ show_submenu() {
...
@@ -2008,6 +2125,10 @@ show_submenu() {
;;
;;
esac
esac
;;
;;
3
)
log_info
"执行修复配置文件IP不对问题"
fix_ip_configurations
"
$platform
"
;;
4
)
4
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [4.1-4.4]: "
"4.1,4.2,4.3,4.4"
)
sub_choice
=
$(
get_user_choice
"请选择子操作 [4.1-4.4]: "
"4.1,4.2,4.3,4.4"
)
log_info
"用户选择子操作:
$sub_choice
"
log_info
"用户选择子操作:
$sub_choice
"
...
@@ -2037,34 +2158,6 @@ show_submenu() {
...
@@ -2037,34 +2158,6 @@ show_submenu() {
*
)
*
)
# 对于不需要子菜单的选项,直接执行
# 对于不需要子菜单的选项,直接执行
case
$main_choice
in
case
$main_choice
in
3
)
log_info
"执行修复配置文件IP不对问题"
fix_ip_configurations
"
$platform
"
;;
5
)
log_info
"执行导出现场日志文件并压缩"
export_and_compress_logs
"
$platform
"
;;
6
)
log_info
"执行修复对外后端服务异常掉线"
fix_external_service_disconnect
"
$platform
"
;;
7
)
log_info
"执行修复ntp服务配置或启动问题"
fix_ntp_config
;;
8
)
log_info
"执行修复端口开放问题"
fix_port_access
"
$platform
"
;;
9
)
log_info
"执行修复服务器DNS异常问题"
fix_dns_config
;;
10
)
log_info
"执行打包备份现场环境数据"
backup_environment_data
"
$platform
"
;;
*
)
*
)
log_error
"无效的选择:
$main_choice
"
log_error
"无效的选择:
$main_choice
"
;;
;;
...
@@ -2073,45 +2166,8 @@ show_submenu() {
...
@@ -2073,45 +2166,8 @@ show_submenu() {
esac
esac
}
}
# 交互式模式
# 脚本入口
interactive_mode
()
{
main
"
$@
"
local
platform
=
$(
detect_platform
)
if
[
"
$platform
"
=
"unknown"
]
;
then
log_error
"无法检测到有效的平台类型"
echo
-n
"请手动指定平台类型 (new/standard): "
read
platform
if
[
"
$platform
"
!=
"new"
]
&&
[
"
$platform
"
!=
"standard"
]
;
then
log_error
"无效的平台类型,退出程序"
exit
1
fi
else
log_info
"检测到平台类型:
$(
[
"
$platform
"
=
"new"
]
&&
echo
"新统一平台"
||
echo
"标准版平台"
)
"
fi
while
true
;
do
show_menu
local
choice
=
$(
get_user_choice
"请选择操作 [0-10]: "
"0,1,2,3,4,5,6,7,8,9,10"
)
log_info
"用户选择:
$choice
"
case
$choice
in
0
)
log_info
"用户选择退出程序"
log_info
"退出程序"
exit
0
;;
*
)
show_submenu
"
$choice
"
"
$platform
"
;;
esac
echo
echo
-e
"
${
YELLOW
}
按回车键继续...
${
NC
}
"
read
done
}
# 主函数
# 主函数
main
()
{
main
()
{
...
@@ -2185,6 +2241,10 @@ main() {
...
@@ -2185,6 +2241,10 @@ main() {
log_info
"执行操作: fix_dns"
log_info
"执行操作: fix_dns"
fix_dns_config
fix_dns_config
;;
;;
backup_environment_data
)
log_info
"执行操作: backup_environment_data"
backup_environment_data
"
$platform
"
;;
*
)
*
)
log_error
"未知操作:
$2
"
log_error
"未知操作:
$2
"
exit
1
exit
1
...
@@ -2205,5 +2265,78 @@ main() {
...
@@ -2205,5 +2265,78 @@ main() {
log_info
"脚本执行完毕"
log_info
"脚本执行完毕"
}
}
}
# 显示帮助信息
show_help
()
{
echo
"Usage:
$0
[OPTIONS] [COMMAND]"
echo
""
echo
"OPTIONS:"
echo
" -h, --help 显示此帮助信息"
echo
" -v, --version 显示版本信息"
echo
""
echo
"COMMANDS:"
echo
" repair 尝试自动修复常见问题"
echo
" check 检查系统状态"
echo
" clean 清理临时文件"
echo
""
}
# 显示版本信息
show_version
()
{
echo
"Issue Handler Tool v1.0"
}
```
ubains-module-test/辅助工具/脚本工具/常见问题处理/issue_handler.sh
```
bash
<<<<<<
< SEARCH
main
"
$@
"
main
()
{
if
[
$#
-gt
0
]
;
then
case
"
$1
"
in
-h
|
--help
)
show_help
exit
0
;;
-v
|
--version
)
show_version
exit
0
;;
repair|check|clean
)
log_info
"执行命令:
$1
"
case
"
$1
"
in
repair
)
perform_repair
;;
check
)
perform_check
;;
clean
)
perform_clean
;;
*
)
log_error
"未知操作:
$1
"
exit
1
;;
esac
;;
*
)
log_error
"未知参数:
$1
"
exit
1
;;
esac
else
# 否则进入交互式模式
log_info
"进入交互式模式"
interactive_mode
fi
log_info
"脚本执行完毕"
}
# 脚本入口
main
"
$@
"
# 脚本入口
# 脚本入口
main
"
$@
"
main
"
$@
"
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论