feat: funciones SSH para infra — conn, check, exec, download, upload, tunnel

Conjunto completo de funciones SSH para operaciones remotas: conexión,
verificación de host, ejecución de comandos, transferencia de archivos
(upload/download) y gestión de túneles. Incluye tipo SSHConn y tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 22:03:41 +02:00
parent 2b123e0c87
commit 560cbf280e
19 changed files with 729 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
package infra
import (
"fmt"
"os/exec"
"strings"
)
// SSHCheck verifica la conectividad SSH ejecutando un comando noop en el host remoto.
// Retorna nil si la conexion fue exitosa, o error con el detalle del fallo.
func SSHCheck(conn SSHConn) error {
args := conn.sshArgs()
args = append(args, "-o", "ConnectTimeout=5")
args = append(args, "-o", "BatchMode=yes")
args = append(args, conn.destination(), "exit", "0")
out, err := exec.Command("ssh", args...).CombinedOutput()
if err != nil {
return fmt.Errorf("ssh check %s: %s", conn.destination(), strings.TrimSpace(string(out)))
}
return nil
}