feat: heartbeat 4h and deploy rewrites settings (2.0.27-SAC)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -630,6 +630,48 @@ function Ensure-RdpMonitorWinRmOperationalLogEnabled {
|
|||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Sync-RdpMonitorSettingsHeartbeatInterval {
|
||||||
|
param(
|
||||||
|
[string]$LocalSettings,
|
||||||
|
[int]$TargetSeconds = 14400
|
||||||
|
)
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $LocalSettings)) { return $false }
|
||||||
|
|
||||||
|
$c = Get-RdpMonitorSettingsRaw -Path $LocalSettings
|
||||||
|
if ([string]::IsNullOrWhiteSpace($c)) { return $false }
|
||||||
|
|
||||||
|
if ($c -match '(?m)^\s*\$HeartbeatInterval\s*=\s*(\d+)') {
|
||||||
|
$current = [int]$Matches[1]
|
||||||
|
if ($current -eq $TargetSeconds) { return $false }
|
||||||
|
$bak = "$LocalSettings.bak.$(Get-Date -Format 'yyyyMMdd_HHmmss')"
|
||||||
|
Copy-Item -LiteralPath $LocalSettings -Destination $bak -Force
|
||||||
|
$newContent = [regex]::Replace(
|
||||||
|
$c,
|
||||||
|
'(?m)^(\s*\$HeartbeatInterval\s*=\s*)\d+',
|
||||||
|
"`${1}$TargetSeconds"
|
||||||
|
)
|
||||||
|
Write-DeployLog "login_monitor.settings.ps1: HeartbeatInterval $current → $TargetSeconds с (резервная копия: $bak)"
|
||||||
|
} else {
|
||||||
|
$bak = "$LocalSettings.bak.$(Get-Date -Format 'yyyyMMdd_HHmmss')"
|
||||||
|
Copy-Item -LiteralPath $LocalSettings -Destination $bak -Force
|
||||||
|
$block = @(
|
||||||
|
'# --- Heartbeat SAC (agent.heartbeat): интервал в секундах; 14400 = 4 ч ---'
|
||||||
|
"`$HeartbeatInterval = $TargetSeconds"
|
||||||
|
) -join "`r`n"
|
||||||
|
$insertBeforeInventory = '(?m)^\s*#\s*---\s*Инвентаризация железа'
|
||||||
|
if ($c -match $insertBeforeInventory) {
|
||||||
|
$newContent = [regex]::Replace($c, $insertBeforeInventory, ($block + "`r`n`r`n" + '$0'), 1)
|
||||||
|
} else {
|
||||||
|
$newContent = ($c.TrimEnd() + "`r`n`r`n" + $block + "`r`n")
|
||||||
|
}
|
||||||
|
Write-DeployLog "login_monitor.settings.ps1: добавлен `$HeartbeatInterval = $TargetSeconds (резервная копия: $bak)"
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.IO.File]::WriteAllText($LocalSettings, $newContent.TrimEnd() + "`r`n", $Utf8Bom)
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
function Invoke-RdpMonitorSettingsPostPatches {
|
function Invoke-RdpMonitorSettingsPostPatches {
|
||||||
param([string]$LocalSettings)
|
param([string]$LocalSettings)
|
||||||
if (-not (Test-Path -LiteralPath $LocalSettings)) { return $false }
|
if (-not (Test-Path -LiteralPath $LocalSettings)) { return $false }
|
||||||
@@ -1086,6 +1128,7 @@ try {
|
|||||||
|
|
||||||
if ($isScriptVersionUpgrade) {
|
if ($isScriptVersionUpgrade) {
|
||||||
Sync-RdpMonitorUseSacFallbackMode -LocalSettings $settingsLocal | Out-Null
|
Sync-RdpMonitorUseSacFallbackMode -LocalSettings $settingsLocal | Out-Null
|
||||||
|
Sync-RdpMonitorSettingsHeartbeatInterval -LocalSettings $settingsLocal | Out-Null
|
||||||
}
|
}
|
||||||
|
|
||||||
$installArgs = @(
|
$installArgs = @(
|
||||||
|
|||||||
+2
-2
@@ -89,7 +89,7 @@ $script:SkipLogDetailLimit = 15
|
|||||||
# строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах).
|
# строки ниже, если правки «мелкие» и вы не хотите менять отображаемую версию в логах).
|
||||||
# Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только
|
# Рекомендация: при значимых релизах меняйте и $ScriptVersion, и version.txt одинаково; при только
|
||||||
# исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1).
|
# исправлениях на шаре — достаточно поднять patch в version.txt (например 1.3.0.1).
|
||||||
$ScriptVersion = "2.0.25-SAC"
|
$ScriptVersion = "2.0.27-SAC"
|
||||||
|
|
||||||
# Логи (все под InstallRoot)
|
# Логи (все под InstallRoot)
|
||||||
$LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log"
|
$LogFile = Join-Path $script:InstallRoot "Logs\login_monitor.log"
|
||||||
@@ -101,7 +101,7 @@ $LogRotationMinute = 0
|
|||||||
$MaxBackupDays = 31
|
$MaxBackupDays = 31
|
||||||
|
|
||||||
# Heartbeat (файл; при отсутствии обновления > HeartbeatStaleAlertMultiplier × интервал — оповещение)
|
# Heartbeat (файл; при отсутствии обновления > HeartbeatStaleAlertMultiplier × интервал — оповещение)
|
||||||
$HeartbeatInterval = 3600
|
$HeartbeatInterval = 14400
|
||||||
# Инвентаризация железа/ПО для SAC (agent.inventory); интервал опроса, сек (12 ч).
|
# Инвентаризация железа/ПО для SAC (agent.inventory); интервал опроса, сек (12 ч).
|
||||||
$InventoryIntervalSec = 43200
|
$InventoryIntervalSec = 43200
|
||||||
$GetInventory = 1
|
$GetInventory = 1
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ $SacApiKey = 'sac_UkOsAT3UWiQS54KK5OJPBDCSucysQDrKFju28wmYiz8'
|
|||||||
# В settings.ps1 используйте 1/0 или $true/$false — не пишите голое false без $
|
# В settings.ps1 используйте 1/0 или $true/$false — не пишите голое false без $
|
||||||
$DailyReportEnabled = 1
|
$DailyReportEnabled = 1
|
||||||
|
|
||||||
|
# --- Heartbeat SAC (agent.heartbeat): интервал в секундах; 14400 = 4 ч ---
|
||||||
|
$HeartbeatInterval = 14400
|
||||||
|
|
||||||
# --- Инвентаризация железа/ПО для SAC (agent.inventory, раз в 12 ч) ---
|
# --- Инвентаризация железа/ПО для SAC (agent.inventory, раз в 12 ч) ---
|
||||||
$GetInventory = $true
|
$GetInventory = $true
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
2.0.25-SAC
|
2.0.27-SAC
|
||||||
|
|||||||
Reference in New Issue
Block a user