Logo de QANode

Nodo SSH Command

El nodo SSH Command permite ejecutar comandos en servidores remotos a través del protocolo SSH. Admite múltiples pasos (comandos secuenciales), autenticación por contraseña o clave privada, y captura de la salida.


Descripción General

PropiedadValor
Tipossh-command
CategoríaInfraestructura
ColorAzul Claro (#0ea5e9)
Entradain
Salidaout

Conexión

Usar Credenciales Guardadas (Recomendado)

Seleccione una credencial de tipo SSH en el campo Credencial.

Configuración Manual

CampoTipoDescripción
HoststringDirección del servidor
PuertonumberPuerto SSH (predeterminado: 22)
UsuariostringNombre de usuario
ContraseñastringContraseña (autenticación por contraseña)
Clave PrivadastringClave privada SSH (autenticación por clave)
PassphrasestringFrase de contraseña de la clave (si está protegida)

Métodos de Autenticación

MétodoCampos Requeridos
ContraseñaUsuario + Contraseña
Clave PrivadaUsuario + Clave Privada + Passphrase (opcional)

Configuración

Timeout Global

CampoTipoPredeterminadoDescripción
Timeout (ms)number30000Tiempo máximo para la ejecución total

Pasos (SSH Steps)

El nodo admite múltiples pasos ejecutados secuencialmente en la misma conexión SSH:

CampoTipoDescripción
LabelstringNombre descriptivo del paso
ComandostringComando a ejecutar (admite {{ }})
Esperar MatchbooleanEsperar texto en la salida
Cadena de MatchstringTexto a esperar
Usar RegexbooleanInterpretar el match como expresión regular
Timeout del Match (ms)numberTiempo máximo para el match

Esperar Match

La función Esperar Match permite que el paso espere hasta que un texto específico aparezca en la salida del comando. Útil para:

  • Esperar que los servicios inicien
  • Esperar prompts interactivos
  • Confirmar que una operación se completó

Ejemplo:

Comando: systemctl restart nginx
Esperar Match: true
Cadena de Match: "Active: active (running)"
Timeout: 10000

Outputs

OutputTipoDescripción
stdoutstringSalida estándar completa
stderrstringSalida de error
exitCodenumberCódigo de salida (0 = éxito)
stepsarrayResultado de cada paso individual

Acceder a los Outputs

// Salida completa
{{ steps.ssh.outputs.stdout }}

// Código de salida
{{ steps.ssh.outputs.exitCode }}

// Resultado de un paso específico
{{ steps.ssh.outputs.steps[0].stdout }}
{{ steps.ssh.outputs.steps[0].exitCode }}

Ejemplos Prácticos

Verificar estado de un servicio

Paso 1:
  Label: Verificar Nginx
  Comando: systemctl status nginx

Despliegue de aplicación

Paso 1:
  Label: Ir al directorio
  Comando: cd /opt/minha-app

Paso 2:
  Label: Pull del repositorio
  Comando: git pull origin main

Paso 3:
  Label: Instalar dependencias
  Comando: npm install --production

Paso 4:
  Label: Reiniciar servicio
  Comando: pm2 restart minha-app
  Esperar Match: true
  Cadena de Match: "online"

Recopilar información del servidor

Paso 1:
  Label: Uso de disco
  Comando: df -h /

Paso 2:
  Label: Memoria
  Comando: free -m

Paso 3:
  Label: Procesos
  Comando: ps aux --sort=-%mem | head -10

Flujo con Validación

[SSH Command: "deploy"]
    │
    ▼
[If: {{ steps.ssh.outputs.exitCode }} === 0]
    │ true → [HTTP Request: GET /health-check]
    │            │
    │            ▼
    │         [Assert: status === 200]
    │
    │ false → [Log: "Deploy falhou: {{ steps.ssh.outputs.stderr }}"]
              → [Stop and Fail]

Consejos

  • Use credenciales guardadas para evitar exponer contraseñas/claves en los flujos
  • Verifique el exitCode0 indica éxito, otros valores indican un error
  • Use expresiones en los comandos: echo "Deploy em {{ variables.ENVIRONMENT }}"
  • Esperar Match es esencial para comandos de larga duración (reinicios, compilaciones)
  • Todos los pasos se ejecutan en la misma sesión SSH — el directorio de trabajo se mantiene entre pasos
  • Los comandos con {{ }} son evaluados antes de la ejecución