提交 7a8f9556 authored 作者: 陈泽健's avatar 陈泽健

feat(scripts): 新增console配置检测功能

- 在auto_crontab_settings.sh中添加health_check任务定义
- 在check_server_health.ps1中集成NewPlatformConsole和TraditionalPlatformConsole检测
- 在check_server_health.sh中新增test_config_console函数实现console配置修复
- 更新PowerShell模块ConfigIPCheck.psm1添加console配置检查功能
- 修改Report.psm1添加console检测结果报告输出
- 在crontab设置中强制启用health_check任务且不支持禁用
上级 644b16ea
...@@ -348,6 +348,8 @@ $ExpectedFunctions = @( ...@@ -348,6 +348,8 @@ $ExpectedFunctions = @(
"Test-FastDFSConnection", "Test-FastDFSConnection",
"Test-NewPlatformIPs", "Test-NewPlatformIPs",
"Test-TraditionalPlatformIPs", "Test-TraditionalPlatformIPs",
"Test-NewPlatformConsole",
"Test-TraditionalPlatformConsole",
"Test-NTPService", "Test-NTPService",
"Test-AndroidDeviceHealth", "Test-AndroidDeviceHealth",
"Export-ServiceLogs", "Export-ServiceLogs",
...@@ -1379,6 +1381,16 @@ function Main { ...@@ -1379,6 +1381,16 @@ function Main {
} }
Write-Log -Level "INFO" -Message "========== 结束检测配置文件 IP ==========" Write-Log -Level "INFO" -Message "========== 结束检测配置文件 IP =========="
# 检测配置文件中的console配置
Write-Host ""
Write-Log -Level "INFO" -Message "========== 开始检测console配置 =========="
if ($platformType -eq "new") {
$consoleResults = Test-NewPlatformConsole -ServerIP $server.IP -Username $server.User -Password $server.Pass -Port $server.Port
} elseif ($platformType -eq "old") {
$consoleResults = Test-TraditionalPlatformConsole -ServerIP $server.IP -Username $server.User -Password $server.Pass -Port $server.Port -SystemInfo $systemInfo
}
Write-Log -Level "INFO" -Message "========== 结束检测console配置 =========="
# 检测 NTP 服务 # 检测 NTP 服务
Write-Log -Level "INFO" -Message "========== 开始检测NTP服务 ==========" Write-Log -Level "INFO" -Message "========== 开始检测NTP服务 =========="
$ntpResults = Test-NTPService -ServerIP $server.IP -Username $server.User -Password $server.Pass -Port $server.Port $ntpResults = Test-NTPService -ServerIP $server.IP -Username $server.User -Password $server.Pass -Port $server.Port
...@@ -1430,6 +1442,7 @@ function Main { ...@@ -1430,6 +1442,7 @@ function Main {
-LogExportResults $logExportResults ` -LogExportResults $logExportResults `
-NTPResults $ntpResults ` -NTPResults $ntpResults `
-FilePermResults $filePermResults ` -FilePermResults $filePermResults `
-ConsoleResults $consoleResults `
-ContainerInfo $containerInfo ` -ContainerInfo $containerInfo `
-AndroidResults $androidResults ` -AndroidResults $androidResults `
-MiddlewareResults $middlewareResults -MiddlewareResults $middlewareResults
......
...@@ -1422,6 +1422,127 @@ test_config_ip() { ...@@ -1422,6 +1422,127 @@ test_config_ip() {
report_add "- finding_count: $count" report_add "- finding_count: $count"
} }
# ------------------------------
# 14) Console配置检测(新增:PRD console检测)
# - 检查配置文件中的console配置,如果为true则改为false
# - 修改前自动备份文件(.bak后缀)
# - 输出:
# console.status = OK/FIXED/WARN
# console.total_files = 检查的文件总数
# console.fixed_count = 修复的文件数
# console.error_count = 错误的文件数
# ------------------------------
test_config_console() {
local platform="$1"
local server_ip="$2"
section "Console配置检测"
log INFO "[CONSOLE] 开始扫描配置文件中的console配置"
report_kv_set "console.status" "OK"
report_kv_set "console.total_files" 0
report_kv_set "console.fixed_count" 0
report_kv_set "console.error_count" 0
local total_files=0
local fixed_files=()
local error_files=()
# console配置的正则表达式(匹配console后跟:或=,然后是true)
local console_re='console[[:space:]]*[:=][[:space:]]*true'
# 选择文件列表函数
local list_cmd=""
if [[ "$platform" == "new" ]]; then
list_cmd="_cfgip_list_files_new"
else
list_cmd="_cfgip_list_files_old"
fi
while IFS= read -r f; do
# 去掉潜在的CR
f="${f%$'\r'}"
[[ -z "$f" ]] && continue
# 防御:过滤掉带冒号的行
[[ "$f" == *":"* ]] && continue
# 防御:路径不应包含制表符等
[[ "$f" =~ [[:space:]] ]] && continue
[[ -f "$f" ]] || continue
# 文本过滤
if command_exists file; then
if ! file "$f" 2>/dev/null | grep -qiE 'text|json|xml|yaml|ascii|utf-8'; then
continue
fi
fi
((total_files++))
# 检查文件中是否存在console=true的配置
local has_console_true=0
if grep -qiE "$console_re" "$f" 2>/dev/null; then
has_console_true=1
fi
if [[ "$has_console_true" -eq 1 ]]; then
log INFO "[CONSOLE] 发现console=true: $f"
# 备份文件
local backup_file="${f}.bak"
if cp "$f" "$backup_file" 2>/dev/null; then
log INFO "[CONSOLE] 已备份: $backup_file"
# 修改配置:将console=true改为console=false
# 使用sed进行替换,忽略大小写
if sed -i 's/\(console[[:space:]]*[:=][[:space:]]*\)true/\1false/gI' "$f" 2>/dev/null; then
log SUCCESS "[CONSOLE] 已修复: $f"
fixed_files+=("$f")
else
log ERROR "[CONSOLE] 修改失败: $f"
error_files+=("$f")
fi
else
log ERROR "[CONSOLE] 备份失败: $f"
error_files+=("$f")
fi
fi
done < <($list_cmd)
report_kv_set "console.total_files" "$total_files"
report_kv_set "console.fixed_count" "${#fixed_files[@]}"
report_kv_set "console.error_count" "${#error_files[@]}"
if [[ "${#fixed_files[@]}" -gt 0 ]]; then
report_kv_set "console.status" "FIXED"
log INFO "[CONSOLE] 已修复以下文件:"
for file in "${fixed_files[@]}"; do
log INFO " - $file"
done
fi
if [[ "${#error_files[@]}" -gt 0 ]]; then
report_kv_set "console.status" "WARN"
log WARN "[CONSOLE] 以下文件处理失败:"
for file in "${error_files[@]}"; do
log WARN " - $file"
done
fi
if [[ "${#fixed_files[@]}" -eq 0 && "${#error_files[@]}" -eq 0 ]]; then
log SUCCESS "[CONSOLE] 所有配置文件console配置正常,无需修复"
fi
report_add ""
report_add "## Console配置检测"
report_add "- status: $(report_kv_get "console.status")"
report_add "- total_files: $total_files"
report_add "- fixed_count: ${#fixed_files[@]}"
report_add "- error_count: ${#error_files[@]}"
}
# ------------------------------ # ------------------------------
# 15) 定时任务查询(补齐:PRD 13) # 15) 定时任务查询(补齐:PRD 13)
# - 只检测、记录,不改动 # - 只检测、记录,不改动
...@@ -3258,10 +3379,13 @@ main() { ...@@ -3258,10 +3379,13 @@ main() {
report_add "- DISK: 详见下方“检测详情 -> 资源分析/磁盘”" report_add "- DISK: 详见下方“检测详情 -> 资源分析/磁盘”"
report_add "- 防火墙: type=$(report_kv_get "fw.type") active=$(report_kv_get "fw.active") open=$(report_kv_get "fw.open")" report_add "- 防火墙: type=$(report_kv_get "fw.type") active=$(report_kv_get "fw.active") open=$(report_kv_get "fw.open")"
# 4) 配置文件 IP 检测(✅ 已实现:替换未实现”占位) # 4) 配置文件 IP 检测(✅ 已实现:替换未实现”占位)
test_config_ip "$platform" "$server_ip" test_config_ip $platform” “$server_ip
# (test_config_ip 内部已做 section + report_add 摘要,这里不再重复写) # (test_config_ip 内部已做 section + report_add 摘要,这里不再重复写)
# 4.1) Console配置检测(新增:检测并修复console=true配置)
test_config_console “$platform” “$server_ip
# 5) NTP # 5) NTP
section "NTP 检测" section "NTP 检测"
local ntp_status local ntp_status
......
...@@ -14,6 +14,7 @@ function Show-HealthReport { ...@@ -14,6 +14,7 @@ function Show-HealthReport {
[hashtable]$LogExportResults, [hashtable]$LogExportResults,
[hashtable]$NTPResults, [hashtable]$NTPResults,
[hashtable]$FilePermResults, [hashtable]$FilePermResults,
[hashtable]$ConsoleResults,
[array]$ContainerInfo, [array]$ContainerInfo,
[array]$AndroidResults, [array]$AndroidResults,
[array]$MiddlewareResults [array]$MiddlewareResults
...@@ -274,6 +275,32 @@ function Show-HealthReport { ...@@ -274,6 +275,32 @@ function Show-HealthReport {
} else { Write-Host " 未执行" -ForegroundColor Yellow; $md += "- 总结: ℹ️ 未执行" } } else { Write-Host " 未执行" -ForegroundColor Yellow; $md += "- 总结: ℹ️ 未执行" }
$md += "" $md += ""
# Console配置检测
Write-Host "【Console配置检测】" -ForegroundColor Yellow
$md += "## Console配置检测"
if ($ConsoleResults) {
Write-Host " $($ConsoleResults.Summary)"
$consoleIcon = switch ($ConsoleResults.Status) {
"OK" { "✅" }
"FIXED" { "🔧" }
"WARN" { "⚠️" }
default { "ℹ️" }
}
$md += "- 总结: $consoleIcon $($ConsoleResults.Summary)"
$md += "- 检查文件数: $($ConsoleResults.TotalFiles)"
$md += "- 修复成功数: $($ConsoleResults.ModifiedFiles.Count)"
$md += "- 错误文件数: $($ConsoleResults.ErrorFiles.Count)"
if ($ConsoleResults.ModifiedFiles -and $ConsoleResults.ModifiedFiles.Count -gt 0) {
$md += "- 已修复文件:"
foreach ($f in $ConsoleResults.ModifiedFiles) { $md += " - $f" }
}
if ($ConsoleResults.ErrorFiles -and $ConsoleResults.ErrorFiles.Count -gt 0) {
$md += "- 错误文件:"
foreach ($f in $ConsoleResults.ErrorFiles) { $md += " - $f" }
}
} else { Write-Host " 未执行" -ForegroundColor Yellow; $md += "- 总结: ℹ️ 未执行" }
$md += ""
# 容器信息 # 容器信息
$md += "## 容器信息" $md += "## 容器信息"
if (-not $ContainerInfo -or $ContainerInfo.Count -eq 0) { if (-not $ContainerInfo -or $ContainerInfo.Count -eq 0) {
......
...@@ -62,6 +62,12 @@ TASK_SCRIPT[auto_clean]="/data/services/scripts/auto_clean_deleted_ubains_v3.sh" ...@@ -62,6 +62,12 @@ TASK_SCRIPT[auto_clean]="/data/services/scripts/auto_clean_deleted_ubains_v3.sh"
TASK_LOG[auto_clean]="" TASK_LOG[auto_clean]=""
TASK_STATUS[auto_clean]=true # 默认启用 TASK_STATUS[auto_clean]=true # 默认启用
# health_check 任务定义(服务自检脚本,强制启用)
TASK_CRON[health_check]="0 0 * * *"
TASK_SCRIPT[health_check]="/data/services/scripts/check_health_shell/check_server_health.sh"
TASK_LOG[health_check]=""
TASK_STATUS[health_check]=true # 强制启用,不支持禁用
# 初始化 sudo 相关变量 # 初始化 sudo 相关变量
if [[ $(id -u) -ne 0 ]]; then if [[ $(id -u) -ne 0 ]]; then
SUDO="sudo" SUDO="sudo"
...@@ -116,6 +122,9 @@ function show_help() { ...@@ -116,6 +122,9 @@ function show_help() {
--disable-auto-clean 禁用 auto_clean 定时任务 --disable-auto-clean 禁用 auto_clean 定时任务
-h, --help 显示此帮助信息 -h, --help 显示此帮助信息
注意:
health_check 任务默认强制启用,不支持禁用
默认行为: 默认行为:
不传参数时,所有定时任务默认启用 不传参数时,所有定时任务默认启用
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论