From 741fef225b8dfa58cf757b0b16d1fbb30bcc6181 Mon Sep 17 00:00:00 2001 From: Matteo Date: Tue, 17 Mar 2026 13:49:14 +0100 Subject: [PATCH] feat : correction bug scp (WIP) --- RebuildBdd/bootstrap-target-host.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/RebuildBdd/bootstrap-target-host.sh b/RebuildBdd/bootstrap-target-host.sh index e030f8b..b534114 100755 --- a/RebuildBdd/bootstrap-target-host.sh +++ b/RebuildBdd/bootstrap-target-host.sh @@ -102,7 +102,7 @@ cleanup() { } trap cleanup EXIT -copy_file_to_remote() { +copy_file_to_remote_via_ssh() { local local_file="$1" local remote_final_path="$2" local remote_mode="$3" @@ -113,7 +113,7 @@ copy_file_to_remote() { [[ -r "$local_file" ]] || fail "fichier source non lisible : $local_file" remote_parent="$(dirname "$remote_final_path")" - remote_tmp="/tmp/$(basename "$remote_final_path").$$.$RANDOM.tmp" + remote_tmp="/tmp/bootstrap_copy.$$.$RANDOM.tmp" ssh "${SSH_OPTS[@]}" "$REMOTE" " set -euo pipefail @@ -122,8 +122,10 @@ copy_file_to_remote() { test -w $(shell_quote "$remote_parent") " >/dev/null 2>&1 || fail "dossier distant absent ou non inscriptible : $remote_parent" - scp "${SSH_OPTS[@]}" "$local_file" "${REMOTE}:${remote_tmp}" >/dev/null 2>&1 \ - || fail "échec de copie temporaire vers ${remote_tmp}" + cat "$local_file" | ssh "${SSH_OPTS[@]}" "$REMOTE" " + set -euo pipefail + cat > $(shell_quote "$remote_tmp") + " >/dev/null 2>&1 || fail "échec de copie distante via SSH vers ${remote_tmp}" ssh "${SSH_OPTS[@]}" "$REMOTE" " set -euo pipefail @@ -229,7 +231,6 @@ to_bool_yes_no "$TARGET_BOOTSTRAP_ALLOW_PASSWORDLESS_SUDO_VALUE" >/dev/null || f ALLOW_PASSWORDLESS_SUDO="$(to_bool_yes_no "$TARGET_BOOTSTRAP_ALLOW_PASSWORDLESS_SUDO_VALUE")" require_cmd ssh -require_cmd scp require_cmd python3 SSH_OPTS=( @@ -321,17 +322,17 @@ EXCLUDED_RESTORE_ROLES=$(printf '%s\n' "$TARGET_EXCLUDED_RESTORE_ROLES_VALUE") EOF log "Copie du .env cible" -copy_file_to_remote "$TMP_ENV_FILE" "$TARGET_ENV_FILE_PATH" "600" +copy_file_to_remote_via_ssh "$TMP_ENV_FILE" "$TARGET_ENV_FILE_PATH" "600" REMOTE_SSH_DIR="$(dirname "$TARGET_SSH_KEY_VALUE")" REMOTE_KNOWN_HOSTS="${REMOTE_SSH_DIR}/known_hosts" log "Copie de la clé privée backup sur la cible" -copy_file_to_remote "$TARGET_BACKUP_SOURCE_SSH_PRIVATE_KEY_VALUE" "$TARGET_SSH_KEY_VALUE" "600" +copy_file_to_remote_via_ssh "$TARGET_BACKUP_SOURCE_SSH_PRIVATE_KEY_VALUE" "$TARGET_SSH_KEY_VALUE" "600" if [[ -n "$TARGET_BACKUP_SOURCE_SSH_PUBLIC_KEY_VALUE" ]]; then log "Copie de la clé publique backup sur la cible" - copy_file_to_remote "$TARGET_BACKUP_SOURCE_SSH_PUBLIC_KEY_VALUE" "${TARGET_SSH_KEY_VALUE}.pub" "644" + copy_file_to_remote_via_ssh "$TARGET_BACKUP_SOURCE_SSH_PUBLIC_KEY_VALUE" "${TARGET_SSH_KEY_VALUE}.pub" "644" fi REMOTE_SSH_PERMS_CMD="