diff --git a/deploy/venv-audit.sh b/deploy/venv-audit.sh index 97d3e40..da484c6 100644 --- a/deploy/venv-audit.sh +++ b/deploy/venv-audit.sh @@ -46,8 +46,11 @@ for EINTRAG in "${VENVS[@]}"; do ZEILEN+=("$NAME: venv fehlt/unlesbar unter $VENV — bitte prüfen") continue fi - # Veraltete Pakete (Anzahl reicht fürs Lagebild) - ALT_N="$("$AUDIT_VENV/bin/pip" list --outdated --path "$SP" 2>/dev/null | tail -n +3 | grep -c '' || echo 0)" + # Veraltete Pakete (Anzahl reicht fürs Lagebild). grep -c druckt IMMER genau eine + # Zahl → KEIN "|| echo 0" (das hängte eine zweite Zeile an → Rechenfehler, Befund + # 17.07.); zur Sicherheit auf Ziffern reduzieren. + ALT_N="$("$AUDIT_VENV/bin/pip" list --outdated --path "$SP" 2>/dev/null | tail -n +3 | grep -c '.')" + ALT_N="${ALT_N//[!0-9]/}"; ALT_N="${ALT_N:-0}" # CVE-Prüfung gegen den eingefrorenen Stand (lokale Pfade/Editables ausfiltern) "$AUDIT_VENV/bin/pip" list --format=freeze --path "$SP" 2>/dev/null \ | grep -vE ' @ |^-e |^#' > "$TMP/$NAME.txt" || true @@ -57,7 +60,8 @@ for EINTRAG in "${VENVS[@]}"; do if printf '%s' "$AUDIT_OUT" | grep -qi 'No known vulnerabilities'; then CVE_N=0 else - CVE_N="$(printf '%s\n' "$AUDIT_OUT" | grep -cE '^[a-zA-Z0-9_.-]+ +[0-9][^ ]* +(GHSA|PYSEC|CVE)' || echo 0)" + CVE_N="$(printf '%s\n' "$AUDIT_OUT" | grep -cE '^[a-zA-Z0-9_.-]+ +[0-9][^ ]* +(GHSA|PYSEC|CVE)')" + CVE_N="${CVE_N//[!0-9]/}"; CVE_N="${CVE_N:-0}" if [ "${CVE_N:-0}" -gt 0 ]; then CVE_DETAILS="${CVE_DETAILS} == ${NAME} ==