提交 849b58fa authored 作者: 陈泽健's avatar 陈泽健

feat(server-check): 新增文件权限检测功能

- 实现 Check-FilePermissions 函数用于检测关键文件权限
- 支持 new 和 old 平台类型的不同检测路径
- 在主流程中调用文件权限检测逻辑
- 更新需求文档标记该功能为已实现
- 确保检测在日志导出前执行并输出权限信息
上级 3d773974
......@@ -160,7 +160,7 @@
注意:此检测步骤需要在日志导出之前执行。不要做ntp配置文件的修改操作,此脚本只做检测!
##### 文件权限检测(❌ 待实现):
##### 文件权限检测(✅ 已实现):
检测目标服务器上的数据库用户权限、nginx用户权限、启动文件权限、redis配置文件权限以及rc.local文件权限;
传统平台:
如果有ujava容器:
......@@ -202,8 +202,7 @@
共有:
1、检测/etc/rc.d/rc.local文件权限
2、数据库用户权限需要进入umysql容器内,数据库账号为root,密码为dNrprU&2S
注意:此检测函数需要在日志导出函数前执行,并且main主函数和日志记录函数都需要补充调用!
注意:此检测函数需要在日志导出函数前执行,并且main主函数和日志记录函数都需要补充调用!将文件权限打印出来!
##### 服务自检报告输出(✅ 已实现):
将服务自检的所有操作步骤与结果输出到日志文件中!
\ No newline at end of file
......@@ -1934,6 +1934,79 @@ function Check-NTPService {
Write-Host "NTP 服务检测完成." -ForegroundColor Green
}
# ================================
# 检测 Check-FilePermissions 服务
# ================================
function Check-FilePermissions {
param (
[Parameter(Mandatory=$true)] [hashtable]$Server,
[Parameter(Mandatory=$true)] [ValidateSet('new','old')] [string]$PlatformType,
[Parameter(Mandatory=$false)] [hashtable]$SystemInfo
)
Write-Log -Level "INFO" -Message "开始文件权限检测 (平台: $PlatformType) ..."
$targets = @()
if ($PlatformType -eq 'new') {
$targets += @(
"/data/services/api/auth/auth-sso-auth/run.sh",
"/data/services/api/auth/auth-sso-gatway/run.sh",
"/data/services/api/auth/auth-sso-system/run.sh",
"/data/services/api/java-meeting/java-meeting2.0/run.sh",
"/data/services/api/java-meeting/java-meeting3.0/run.sh",
"/data/services/api/java-meeting/java-meeting-extapi/run.sh",
"/data/services/api/java-meeting/java-message-scheduling/run.sh",
"/data/services/api/java-meeting/java-mqtt/run.sh",
"/data/services/api/java-meeting/java-quartz/run.sh",
"/data/services/api/start.sh",
"/data/services/scripts/*.sh",
"/data/third_party/paperless/run.sh",
"/data/third_party/paperless/start.sh",
"/data/third_party/wifi-local/config.ini",
"/data/third_party/wifi-local/startDB.sh",
"/data/third_party/wifi-local/wifi*",
"/etc/rc.d/rc.local",
"/data/middleware/nginx/config/*.conf",
"/data/middleware/emqx/config/*.conf"
)
$targets += @(
"/data/services/api/python-cmdb/*.sh",
"/data/services/api/python-voice/*.sh"
)
} else {
$targets += @(
"/var/www/java/api-java-meeting2.0/run.sh",
"/var/www/java/external-meeting-api/run.sh",
"/var/www/java/start.sh",
"/var/www/html/start.sh",
"/var/www/wifi-local/config.ini",
"/var/www/wifi-local/startDB.sh",
"/var/www/wifi-local/wifi*",
"/var/www/paperless/run.sh",
"/var/www/paperless/start.sh",
"/var/www/redis/redis-*.conf",
"/var/www/emqx/*.conf",
"/var/www/emqx/config/*.conf",
"/etc/rc.d/rc.local"
)
}
foreach ($path in $targets) {
$cmd = "if ls -l $path 2>/dev/null; then echo '__PERM_OK__'; else echo '__PERM_MISS__ $path'; fi"
$res = Invoke-SSHCommand -HostName $Server.IP -User $Server.User -Pass $Server.Pass -Port $Server.Port -Command $cmd
$out = ($res.Output -join "`n")
if ($out -match "__PERM_OK__") {
($out -split "`r?`n") | Where-Object { $_ -match "^[-dl]" } | ForEach-Object {
Write-Log -Level 'SUCCESS' -Message "权限: $_"
}
} else {
Write-Log -Level 'ERROR' -Message "未找到文件: $path"
}
}
Write-Log -Level "INFO" -Message "文件权限检测完成"
}
# ================================
# 主函数
# ================================
......@@ -2055,6 +2128,9 @@ function Main {
Check-NTPService -ServerIP $server.IP -Username $server.User -Password $server.Pass
Write-Log -Level "INFO" -Message "NTP 服务检测完成."
# 文件权限检测 (在日志导出之前执行)
Check-FilePermissions -Server $server -PlatformType $platformType -SystemInfo $systemInfo
# 询问是否导出日志
Write-Host ""
Write-Host "==================================================================" -ForegroundColor Cyan
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论