diff --git a/deploy.sh b/deploy.sh index ff5d152..44eff2a 100644 --- a/deploy.sh +++ b/deploy.sh @@ -33,44 +33,24 @@ check_ssh_connection() { ssh -O check -o ControlPath="${SSH_CONTROL_PATH}" ${SERVER} 2>/dev/null || return 1 } -# Fonction pour exécuter une commande SSH avec connexion persistante et gestion d'erreurs robuste +# Fonction pour exécuter une commande SSH avec connexion persistante ssh_exec() { - local max_retries=2 - local retry_count=0 - - while [ $retry_count -lt $max_retries ]; do - # Nettoyer le socket s'il existe mais est invalide - if [ -S "${SSH_CONTROL_PATH}" ]; then - if ! check_ssh_connection; then - # Connexion morte, nettoyer avant de réessayer - cleanup_dead_ssh - fi + # Nettoyer le socket s'il existe mais est invalide + if [ -S "${SSH_CONTROL_PATH}" ]; then + if ! check_ssh_connection; then + # Connexion morte, nettoyer avant d'exécuter + cleanup_dead_ssh fi + fi - # Exécuter la commande SSH - # Si le socket existe mais est invalide, SSH avec ControlMaster=auto le détectera et créera une nouvelle connexion - if ssh -o ControlMaster=auto \ - -o ControlPath="${SSH_CONTROL_PATH}" \ - -o ControlPersist=300 \ - -o ConnectTimeout=10 \ - -o ServerAliveInterval=60 \ - -o ServerAliveCountMax=3 \ - ${SERVER} "$@" 2>&1; then - return 0 - else - local exit_code=$? - retry_count=$((retry_count + 1)) - - if [ $retry_count -lt $max_retries ]; then - # Nettoyer la connexion morte avant de réessayer - cleanup_dead_ssh - sleep 1 - else - # Dernière tentative échouée, retourner le code d'erreur - return $exit_code - fi - fi - done + # Exécuter la commande SSH (une seule tentative, pas de retry) + ssh -o ControlMaster=auto \ + -o ControlPath="${SSH_CONTROL_PATH}" \ + -o ControlPersist=300 \ + -o ConnectTimeout=10 \ + -o ServerAliveInterval=60 \ + -o ServerAliveCountMax=3 \ + ${SERVER} "$@" 2>&1 } # Nettoyer les connexions SSH persistantes et le répertoire temporaire à la fin