From 67ceef119b8bc74af9f63ea994369e8815301c60 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 8 Jul 2026 22:35:11 +0000 Subject: [PATCH] fix(maintenance): guard step 00 RFC1918 extraction extract_step_data brach unter set -euo pipefail den gesamten Lauf ab, wenn die Step-00-Ausgabe keine RFC1918-IP enthielt: grep lieferte Exit 1, die Zuweisung schlug fehl und errexit beendete den sonst erfolgreichen Lauf. grep -m1 -oE ersetzt grep | head; nur Exit 1 (kein Treffer) wird als leere IP entschaerft, andere grep-Fehler werden via return weitergereicht. Kein pauschales || true. Steps 03/08/09/10 unveraendert. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01FqwkYKyZ1UPZB8uvezJAdJ --- pihole_maintenance_pro.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pihole_maintenance_pro.sh b/pihole_maintenance_pro.sh index e789420..8e01fb7 100755 --- a/pihole_maintenance_pro.sh +++ b/pihole_maintenance_pro.sh @@ -269,7 +269,21 @@ collect_system_info() { extract_step_data() { local step_num="$1" output="$2" case "$step_num" in - 00) STEP_DATA[00_ip]=$(echo "$output" | grep -oE '192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]+\.[0-9]+' | head -1) ;; + # Fehlende RFC1918-IP (grep Exit 1) ist ein erlaubter Zustand und darf unter + # set -euo pipefail nicht abbrechen; echte grep-Fehler werden weitergereicht. + 00) + local step_ip="" + if step_ip=$(grep -m1 -oE '192\.168\.[0-9]+\.[0-9]+|10\.[0-9]+\.[0-9]+\.[0-9]+|172\.(1[6-9]|2[0-9]|3[0-1])\.[0-9]+\.[0-9]+' <<< "$output"); then + STEP_DATA[00_ip]="$step_ip" + else + local grep_rc=$? + if [[ "$grep_rc" -eq 1 ]]; then + STEP_DATA[00_ip]="" + else + return "$grep_rc" + fi + fi + ;; 03) STEP_DATA[03_version]=$(echo "$output" | grep "Core version" | awk '{print $4}') ;; 07) STEP_DATA[07_listeners]=$(echo "$output" | wc -l) ;; 08) STEP_DATA[08_response]=$(echo "$output" | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -1) ;;