feat: deploy дописывает HEARTBEAT_INTERVAL при отсутствии в конфиге (2.0.6-SAC)
Явная проверка ключей в /etc/ssh-monitor.conf, блок 240 мин + watchdog; исправлен текст startup heartbeat. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+59
-8
@@ -170,24 +170,75 @@ set_config_kv() {
|
||||
fi
|
||||
}
|
||||
|
||||
config_key_exists() {
|
||||
local key="$1" file="$2"
|
||||
grep -qE "^[[:space:]]*${key}=" "$file" 2>/dev/null
|
||||
}
|
||||
|
||||
append_heartbeat_interval_block() {
|
||||
local file="$1"
|
||||
{
|
||||
printf '\n# --- SAC agent.heartbeat (интервал в минутах; %s = 4 ч) ---\n' "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES"
|
||||
printf 'HEARTBEAT_INTERVAL_MINUTES="%s"\n' "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES"
|
||||
printf '# Порог watchdog: интервал + 1 ч запас (%s с)\n' "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE"
|
||||
printf 'WATCHDOG_MAX_HEARTBEAT_AGE="%s"\n' "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE"
|
||||
} >>"$file"
|
||||
}
|
||||
|
||||
sync_heartbeat_interval_config() {
|
||||
local file="$CONFIG_FILE"
|
||||
local current_interval current_watchdog
|
||||
local changed=0
|
||||
local backed_up=0
|
||||
|
||||
[ -f "$file" ] || return 1
|
||||
|
||||
current_interval=$(config_conf_value "HEARTBEAT_INTERVAL_MINUTES" "$file" 2>/dev/null || true)
|
||||
current_watchdog=$(config_conf_value "WATCHDOG_MAX_HEARTBEAT_AGE" "$file" 2>/dev/null || true)
|
||||
backup_config_once() {
|
||||
if [ "$backed_up" -eq 0 ]; then
|
||||
cp "$file" "${file}.bak.$(date +%Y%m%d_%H%M%S)" 2>/dev/null || true
|
||||
backed_up=1
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$current_interval" = "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" ] \
|
||||
&& [ "$current_watchdog" = "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" ]; then
|
||||
if ! config_key_exists "HEARTBEAT_INTERVAL_MINUTES" "$file"; then
|
||||
backup_config_once
|
||||
if ! config_key_exists "WATCHDOG_MAX_HEARTBEAT_AGE" "$file"; then
|
||||
append_heartbeat_interval_block "$file"
|
||||
log_message "INFO" "Config $file: добавлены HEARTBEAT_INTERVAL_MINUTES=$EXPECTED_HEARTBEAT_INTERVAL_MINUTES и WATCHDOG_MAX_HEARTBEAT_AGE=$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE (отсутствовали в конфиге)."
|
||||
else
|
||||
set_config_kv "HEARTBEAT_INTERVAL_MINUTES" "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" "$file"
|
||||
log_message "INFO" "Config $file: добавлен HEARTBEAT_INTERVAL_MINUTES=$EXPECTED_HEARTBEAT_INTERVAL_MINUTES (отсутствовал в конфиге)."
|
||||
fi
|
||||
changed=1
|
||||
else
|
||||
current_interval=$(config_conf_value "HEARTBEAT_INTERVAL_MINUTES" "$file" 2>/dev/null || true)
|
||||
if [ "$current_interval" != "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" ]; then
|
||||
backup_config_once
|
||||
set_config_kv "HEARTBEAT_INTERVAL_MINUTES" "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" "$file"
|
||||
log_message "INFO" "Config $file: HEARTBEAT_INTERVAL_MINUTES ${current_interval:-?} → $EXPECTED_HEARTBEAT_INTERVAL_MINUTES (deploy policy)."
|
||||
changed=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! config_key_exists "WATCHDOG_MAX_HEARTBEAT_AGE" "$file"; then
|
||||
backup_config_once
|
||||
set_config_kv "WATCHDOG_MAX_HEARTBEAT_AGE" "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" "$file"
|
||||
log_message "INFO" "Config $file: добавлен WATCHDOG_MAX_HEARTBEAT_AGE=$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE (отсутствовал в конфиге)."
|
||||
changed=1
|
||||
else
|
||||
current_watchdog=$(config_conf_value "WATCHDOG_MAX_HEARTBEAT_AGE" "$file" 2>/dev/null || true)
|
||||
if [ "$current_watchdog" != "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" ]; then
|
||||
backup_config_once
|
||||
set_config_kv "WATCHDOG_MAX_HEARTBEAT_AGE" "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" "$file"
|
||||
log_message "INFO" "Config $file: WATCHDOG_MAX_HEARTBEAT_AGE ${current_watchdog:-?} → $EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE (deploy policy)."
|
||||
changed=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$changed" -eq 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
cp "$file" "${file}.bak.$(date +%Y%m%d_%H%M%S)" 2>/dev/null || true
|
||||
set_config_kv "HEARTBEAT_INTERVAL_MINUTES" "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" "$file"
|
||||
set_config_kv "WATCHDOG_MAX_HEARTBEAT_AGE" "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" "$file"
|
||||
log_message "INFO" "Config $file: HEARTBEAT_INTERVAL_MINUTES=$EXPECTED_HEARTBEAT_INTERVAL_MINUTES, WATCHDOG_MAX_HEARTBEAT_AGE=$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE (deploy policy on script upgrade)."
|
||||
if [ "$DEPLOY_MODE" -eq 1 ]; then
|
||||
say_info "Heartbeat: ${EXPECTED_HEARTBEAT_INTERVAL_MINUTES} мин, watchdog ${EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE} с."
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user