feat: heartbeat 4h via HEARTBEAT_INTERVAL_MINUTES (2.0.2-SAC)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
PTah
2026-06-10 17:25:19 +10:00
parent 59ba8cf811
commit 908f8958a4
5 changed files with 53 additions and 5 deletions
+37
View File
@@ -24,6 +24,8 @@ SUMMARY_UPDATER="—"
CONFIG_FILE="/etc/ssh-monitor.conf"
DEPLOY_INSTALL_PATH="/opt/scripts/update_ssh_monitor.sh"
EXPECTED_HEARTBEAT_INTERVAL_MINUTES=240
EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE=$((EXPECTED_HEARTBEAT_INTERVAL_MINUTES * 60 + 3600))
SAC_SPOOL_DIR_DEFAULT="/var/lib/ssh-monitor/sac-spool"
SYSTEMD_UNIT_PATH="/etc/systemd/system/ssh-monitor.service"
@@ -155,6 +157,40 @@ ensure_ssh_monitor_config_from_example() {
return 0
}
set_config_kv() {
local key="$1" val="$2" file="$3"
if grep -qE "^[[:space:]]*${key}=" "$file" 2>/dev/null; then
sed -i -E "s/^[[:space:]]*${key}=.*/${key}=\"${val}\"/" "$file"
else
printf '%s="%s"\n' "$key" "$val" >>"$file"
fi
}
sync_heartbeat_interval_config() {
local file="$CONFIG_FILE"
local current_interval current_watchdog
[ -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)
if [ "$current_interval" = "$EXPECTED_HEARTBEAT_INTERVAL_MINUTES" ] \
&& [ "$current_watchdog" = "$EXPECTED_WATCHDOG_MAX_HEARTBEAT_AGE" ]; 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
CONFIG_CHANGED=1
return 0
}
sync_use_sac_fallback_mode() {
local file="$CONFIG_FILE"
[ -f "$file" ] || return 1
@@ -968,6 +1004,7 @@ update_script() {
if [ "$script_changed" -eq 1 ]; then
sync_use_sac_fallback_mode || true
sync_heartbeat_interval_config || true
fi
if [ "$script_changed" -eq 1 ] || [ "${SAC_CLIENT_CHANGED:-0}" -eq 1 ] || [ "${CONFIG_CHANGED:-0}" -eq 1 ]; then