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
}
