From 6175c38117e96b205c4a647b13598acfd7003ff9 Mon Sep 17 00:00:00 2001 From: Stefan Mewes Date: Fri, 20 Jun 2025 12:32:50 +0200 Subject: [PATCH] =?UTF-8?q?Logging:=20nur=20Eintr=C3=A4ge=20nach=20x=20Tag?= =?UTF-8?q?en=20werden=20gel=C3=B6scht=20sonst=20nichts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ssh_manager.sh | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/ssh_manager.sh b/ssh_manager.sh index 369ceaf..bb21e1e 100755 --- a/ssh_manager.sh +++ b/ssh_manager.sh @@ -5,13 +5,29 @@ FILE_URL="http://fileserver.fritz.box/Mobaxterm/Homelab.mxtsessions" INPUT_FILE="Homelab.mxtsessions" OUTPUT_FILE="serverliste.csv" LOG_FILE="script.log" +LOG_RETENTION_DAYS=2 # Log-Einträge älter als X Tage werden entfernt log() { echo "[$(date +"%Y-%m-%d %H:%M:%S")] $1" | tee -a "$LOG_FILE" } +clean_old_logs() { + tmp_log="${LOG_FILE}.tmp" + cutoff_date=$(date -d "-${LOG_RETENTION_DAYS} days" +'%Y-%m-%d %H:%M:%S') + + awk -v cutoff="$cutoff_date" ' + /^\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\]/ { + timestamp = substr($0, 2, 19) + if (timestamp >= cutoff) print $0 + next + } + # Alle anderen Zeilen behalten (auch ohne Zeitstempel) + { print $0 } + ' "$LOG_FILE" > "$tmp_log" && mv "$tmp_log" "$LOG_FILE" +} + download_file() { - rm -f Homelab.mxtsessions* 2>/dev/null + rm -f "$INPUT_FILE" 2>/dev/null if wget -q "$FILE_URL" -O "$INPUT_FILE"; then log "Datei erfolgreich heruntergeladen." else @@ -80,18 +96,8 @@ show_menu() { } main() { - # Alte Logeinträge aus der Logdatei entfernen (basierend auf konfigurierbarem Zeitraum) - LOG_RETENTION_DAYS=7 - tmp_log="${LOG_FILE}.tmp" - cutoff_date=$(date -d "${LOG_RETENTION_DAYS} days ago" +'%Y-%m-%d %H:%M:%S') - awk -v cutoff="$cutoff_date" ' - match($0, /^\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\]/) { - timestamp = substr($0, 2, 19) - if (timestamp >= cutoff) print $0 - } - ' "$LOG_FILE" > "$tmp_log" && mv "$tmp_log" "$LOG_FILE" - # Alte Logeinträge löschen, wenn älter als 7 Tage - find . -name "$LOG_FILE" -type f -mtime +7 -exec rm {} \; + [[ -f "$LOG_FILE" ]] && clean_old_logs + log "Skript gestartet." download_file extract_data