From 0afd34590d740a76ee7fb0dbd6a92fc9ae3243f2 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Wed, 14 Jan 2026 13:56:08 -0800 Subject: [PATCH] Fix transmission-metrics session ID parsing Transmission doesn't support HEAD requests, so use -i flag with sed to parse only the HTTP headers (stopping at the blank line before body). Also anchor grep pattern to line start to avoid matching HTML content. Co-Authored-By: Claude Opus 4.5 --- .../transmission_metrics/templates/transmission-metrics.sh.j2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ansible/roles/transmission_metrics/templates/transmission-metrics.sh.j2 b/ansible/roles/transmission_metrics/templates/transmission-metrics.sh.j2 index 9929eb5..2916b27 100644 --- a/ansible/roles/transmission_metrics/templates/transmission-metrics.sh.j2 +++ b/ansible/roles/transmission_metrics/templates/transmission-metrics.sh.j2 @@ -9,8 +9,10 @@ OUTPUT_FILE="{{ transmission_metrics_dir }}/transmission.prom" TEMP_FILE="${OUTPUT_FILE}.tmp" # Get session ID (required for transmission RPC) +# Note: transmission doesn't support HEAD requests, so we make a request and parse +# the 409 response headers. We use sed to stop at the blank line (which has \r) before body. get_session_id() { - curl -s -I "$RPC_URL" 2>/dev/null | grep -i 'X-Transmission-Session-Id' | awk '{print $2}' | tr -d '\r' + curl -s -i "$RPC_URL" 2>/dev/null | sed '/^\r$/q' | grep -i '^X-Transmission-Session-Id:' | awk '{print $2}' | tr -d '\r' } # Make RPC request