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

O nó suporta múltiplos passos executados sequencialmente na mesma conexão SSH. Use + Adicionar passo para incluir comandos, envios de arquivo e downloads.

Tipo de passoDescrição
ComandoExecuta um comando no shell remoto
Enviar arquivoEnvia um fileRef para o servidor remoto via SFTP
Baixar arquivoBaixa um arquivo remoto via SFTP, com fallback para SCP

Todos os passos rodam na mesma sessão SSH. Isso significa que comandos como cd /minha/pasta afetam os passos seguintes quando eles usam Pasta atual.

Passo Comando

CampoTipoDescrição
RótulostringNome 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

Passo Enviar Arquivo

CampoTipoDescrição
RótulostringNome descritivo do passo
ArquivofileRefArquivo a enviar
DestinoseleçãoPasta atual ou Caminho remoto
Caminho remotostringCaminho absoluto ou relativo no servidor, quando o destino é caminho remoto
Manter nome do arquivobooleanUsa o nome original do arquivo
Nome do arquivostringNovo nome no servidor, quando Manter nome do arquivo está desligado
Criar pastas remotasbooleanCria diretórios faltantes antes do envio

Com Destino = Pasta atual, o QANode envia o arquivo para o diretório atual do shell SSH. Isso permite fazer:

Passo 1: cd /opt/minha-app/uploads
Passo 2: Enviar arquivo → Destino: Pasta atual

Com Destino = Caminho remoto, informe o caminho diretamente. Se terminar com /, o arquivo é salvo dentro da pasta informada.

Passo Baixar Arquivo

CampoTipoDescrição
RótulostringNome descritivo do passo
OrigemseleçãoPasta atual ou Caminho remoto
Nome do arquivostringNome do arquivo quando a origem é a pasta atual
Caminho remotostringCaminho do arquivo no servidor, quando a origem é caminho remoto
Nome da variávelstringChave usada em outputs.files
Nome do arquivo de saídastringNome do arquivo salvo no QANode. Se vazio, usa o nome remoto

Se a extensão for omitida no caminho remoto, o QANode tenta resolver pelo nome do arquivo na pasta remota. Por exemplo, /tmp/massas pode encontrar /tmp/massas.csv quando esse arquivo existe no servidor.

O MIME type é inferido automaticamente pelo conteúdo e pelo nome do arquivo.

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
exitCodenumberCódigo de saída (0 = sucesso)
commandsarrayResultado de cada passo individual
filesobjectArquivos baixados, quando existe passo Baixar arquivo
fileReffileRefAtalho para o último arquivo baixado
fileInfoobjectMetadados dos arquivos baixados, como nome, MIME type, tamanho, caminho remoto e método de transferência

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.commands[0].stdout }}
{{ steps.ssh.outputs.commands[0].exitCode }}

// Arquivo baixado pelo nome da variável
{{ steps.ssh.outputs.files.relatorio }}

// Atalho para o último arquivo baixado
{{ steps.ssh.outputs.fileRef }}

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

Enviar e baixar arquivo na pasta atual

Passo 1:
  Rótulo: Entrar na pasta
  Comando: cd /root/testes

Passo 2:
  Rótulo: Enviar massa
  Tipo: Enviar arquivo
  Arquivo: {{ steps["file-generate"].outputs.fileRef }}
  Destino: Pasta atual
  Manter nome do arquivo: true

Passo 3:
  Rótulo: Baixar resultado
  Tipo: Baixar arquivo
  Origem: Pasta atual
  Nome do arquivo: resultado.csv
  Nome da variável: resultado

Depois do download:

{{ steps.ssh.outputs.files.resultado }}
{{ steps.ssh.outputs.fileInfo.resultado.name }}

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
  • Use Pasta atual quando um comando anterior já posicionou o shell no diretório correto
  • Use Caminho remoto quando quiser ser explícito e independente do cd anterior
  • Para baixar arquivos, prefira um Nome da variável claro, como relatorio, massa ou evidencia
  • Comandos com {{ }} são avaliados antes da execução