mirror of
https://github.com/MaksTinyWorkshop/_Assistant_Lead_Tech
synced 2026-04-06 21:41:42 +02:00
fix(scripts): capturer CSV via fichier tmp — évite la perte du buffer expect sur Linux
This commit is contained in:
@@ -28,23 +28,27 @@ _load_global_secrets() {
|
|||||||
|
|
||||||
echo "Chargement des secrets globaux..." >&2
|
echo "Chargement des secrets globaux..." >&2
|
||||||
|
|
||||||
# Export CSV complet — une seule ouverture du coffre
|
# Export CSV complet — via fichier temporaire pour capturer tout le stdout
|
||||||
local csv
|
local tmpfile
|
||||||
csv=$(KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" expect <<'EOF'
|
tmpfile=$(mktemp)
|
||||||
|
KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" TMPFILE="$tmpfile" expect <<'EOF'
|
||||||
log_user 0
|
log_user 0
|
||||||
set timeout 30
|
set timeout 30
|
||||||
|
set fh [open $env(TMPFILE) w]
|
||||||
spawn keepassxc-cli export --format csv $env(SECRETS_KDBX)
|
spawn keepassxc-cli export --format csv $env(SECRETS_KDBX)
|
||||||
expect "Saisir le mot de passe pour déverrouiller*"
|
expect "Saisir le mot de passe pour déverrouiller*"
|
||||||
send -- "$env(KDBX_PASSWORD)\r"
|
send -- "$env(KDBX_PASSWORD)\r"
|
||||||
expect eof
|
expect eof
|
||||||
|
puts $fh $expect_out(buffer)
|
||||||
|
close $fh
|
||||||
catch wait result
|
catch wait result
|
||||||
puts -nonewline $expect_out(buffer)
|
|
||||||
exit [lindex $result 3]
|
exit [lindex $result 3]
|
||||||
EOF
|
EOF
|
||||||
) || {
|
local rc=$?
|
||||||
echo "Impossible d'exporter le coffre." >&2
|
local csv
|
||||||
return 1
|
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
|
# 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
|
# On cherche la ligne d'en-tête CSV pour ignorer le bruit du buffer expect
|
||||||
|
|||||||
@@ -39,23 +39,27 @@ _sync_service_secrets() {
|
|||||||
|
|
||||||
echo "Sync des secrets de service..." >&2
|
echo "Sync des secrets de service..." >&2
|
||||||
|
|
||||||
# Export CSV complet — une seule ouverture du coffre
|
# Export CSV complet — via fichier temporaire pour capturer tout le stdout
|
||||||
local csv
|
local tmpfile
|
||||||
csv=$(KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" expect <<'EOF'
|
tmpfile=$(mktemp)
|
||||||
|
KDBX_PASSWORD="$KDBX_PASSWORD" SECRETS_KDBX="$SECRETS_KDBX" TMPFILE="$tmpfile" expect <<'EOF'
|
||||||
log_user 0
|
log_user 0
|
||||||
set timeout 30
|
set timeout 30
|
||||||
|
set fh [open $env(TMPFILE) w]
|
||||||
spawn keepassxc-cli export --format csv $env(SECRETS_KDBX)
|
spawn keepassxc-cli export --format csv $env(SECRETS_KDBX)
|
||||||
expect "Saisir le mot de passe pour déverrouiller*"
|
expect "Saisir le mot de passe pour déverrouiller*"
|
||||||
send -- "$env(KDBX_PASSWORD)\r"
|
send -- "$env(KDBX_PASSWORD)\r"
|
||||||
expect eof
|
expect eof
|
||||||
|
puts $fh $expect_out(buffer)
|
||||||
|
close $fh
|
||||||
catch wait result
|
catch wait result
|
||||||
puts -nonewline $expect_out(buffer)
|
|
||||||
exit [lindex $result 3]
|
exit [lindex $result 3]
|
||||||
EOF
|
EOF
|
||||||
) || {
|
local rc=$?
|
||||||
echo "Impossible d'exporter le coffre." >&2
|
local csv
|
||||||
return 1
|
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
|
# 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
|
# On cherche la ligne d'en-tête CSV pour ignorer le bruit du buffer expect
|
||||||
|
|||||||
Reference in New Issue
Block a user