fix(scripts): capturer CSV via fichier tmp — évite la perte du buffer expect sur Linux

This commit is contained in:
MaksTinyWorkshop
2026-03-26 18:43:21 +01:00
parent ba772da50c
commit 69101cfc77
2 changed files with 24 additions and 16 deletions

View File

@@ -28,23 +28,27 @@ _load_global_secrets() {
echo "Chargement des secrets globaux..." >&2
# Export CSV complet — une seule ouverture du coffre
local csv
csv=$(KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" expect <<'EOF'
# Export CSV complet — via fichier temporaire pour capturer tout le stdout
local tmpfile
tmpfile=$(mktemp)
KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" TMPFILE="$tmpfile" expect <<'EOF'
log_user 0
set timeout 30
set fh [open $env(TMPFILE) w]
spawn keepassxc-cli export --format csv $env(SECRETS_KDBX)
expect "Saisir le mot de passe pour déverrouiller*"
send -- "$env(KDBX_PASSWORD)\r"
expect eof
puts $fh $expect_out(buffer)
close $fh
catch wait result
puts -nonewline $expect_out(buffer)
exit [lindex $result 3]
EOF
) || {
echo "Impossible d'exporter le coffre." >&2
return 1
}
local rc=$?
local csv
csv=$(cat "$tmpfile")
rm -f "$tmpfile"
[ $rc -ne 0 ] && { echo "Impossible d'exporter le coffre." >&2; return 1; }
# Parser le CSV avec python3 — gère les champs multilignes et les virgules dans les valeurs
# On cherche la ligne d'en-tête CSV pour ignorer le bruit du buffer expect