QANode Logo

Nó SSH Command

O nó SSH Command permite executar comandos em servidores remotos via protocolo SSH. Suporta múltiplos passos (comandos sequenciais), autenticação por senha ou chave privada, e captura da saída.


Visão Geral

PropriedadeValor
Tipossh-command
CategoriaInfraestrutura
Cor🔵 Azul Claro (#0ea5e9)
Entradain
Saídaout

Conexão

Usando Credenciais Salvas (Recomendado)

Selecione uma credencial do tipo SSH no campo Credencial.

Configuração Manual

CampoTipoDescrição
HoststringEndereço do servidor
PortanumberPorta SSH (padrão: 22)
UsuáriostringNome de usuário
SenhastringSenha (autenticação por senha)
Chave PrivadastringChave privada SSH (autenticação por chave)
PassphrasestringFrase-senha da chave (se protegida)

Métodos de Autenticação

MétodoCampos Necessários
SenhaUsuário + Senha
Chave PrivadaUsuário + Chave Privada + Passphrase (opcional)

Configuração

Timeout Global

CampoTipoPadrãoDescrição
Timeout (ms)number30000Tempo máximo para a execução total

Passos (SSH Steps)

O nó suporta múltiplos passos executados sequencialmente na mesma conexão SSH:

CampoTipoDescrição
LabelstringNome descritivo do passo
ComandostringComando a executar (suporta {{ }})
Aguardar MatchbooleanEsperar por texto na saída
String de MatchstringTexto a aguardar
Usar RegexbooleanInterpretar match como regex
Timeout do Match (ms)numberTempo máximo para match

Aguardar Match

O recurso de Aguardar Match permite que o passo espere até que um texto específico apareça na saída do comando. Útil para:

  • Aguardar serviços iniciarem
  • Esperar prompts interativos
  • Confirmar que uma operação foi concluída

Exemplo:

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

Outputs

OutputTipoDescrição
stdoutstringSaída padrão completa
stderrstringSaída de erro
exitCodenumberCódigo de saída (0 = sucesso)
stepsarrayResultado de cada passo individual

Acessando os Outputs

// Saída completa
{{ steps.ssh.outputs.stdout }}

// Código de saída
{{ steps.ssh.outputs.exitCode }}

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

Exemplos Práticos

Verificar status de serviço

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

Deploy de aplicação

Passo 1:
  Label: Ir para diretório
  Comando: cd /opt/minha-app

Passo 2:
  Label: Pull do repositório
  Comando: git pull origin main

Passo 3:
  Label: Instalar dependências
  Comando: npm install --production

Passo 4:
  Label: Reiniciar serviço
  Comando: pm2 restart minha-app
  Aguardar Match: true
  String de Match: "online"

Coletar informações do servidor

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

Passo 2:
  Label: Memória
  Comando: free -m

Passo 3:
  Label: Processos
  Comando: ps aux --sort=-%mem | head -10

Fluxo com Validação

[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]

Dicas

  • Use credenciais salvas para evitar expor senhas/chaves nos fluxos
  • Verifique o exitCode0 indica sucesso, outros valores indicam erro
  • Use expressões nos comandos: echo "Deploy em {{ variables.ENVIRONMENT }}"
  • O aguardar match é essencial para comandos que demoram (restarts, builds)
  • Todos os passos rodam na mesma sessão SSH — o diretório de trabalho é mantido entre passos
  • Comandos com {{ }} são avaliados antes da execução