Referência rápida

Folha de Cola Gem Ruby Do (Execução Remota)

Guia rápido para a gem Ruby DO: conexões SSH com servidor, execução remota de comandos, inspeção de arquivos, transferências e substituição de conteúdo.

· Publicado

DO é uma gem Ruby que fornece uma DSL limpa e encadeável para executar comandos e gerenciar arquivos via SSH em servidores Linux remotos.

Conexão com Servidor

require 'do'

# Inicializar conexão com autenticação por chave SSH
server = DO::Server.new('srv1', 'node1.example.com', 'root', key: ['~/.ssh/id_rsa'])

Executando Comandos

# Comando único
output = server.run 'uname -a'

# Múltiplos argumentos de comando
server.run 'apt-get', 'update', '-y'

# Comandos com respostas de prompt stdin
server.run 'passwd user', 'newpassword', 'newpassword'

Inspeção e Transferências de Arquivos

# Verificar existência de arquivo
server.exist?('/etc/nginx/nginx.conf') # → true / false

# Ler conteúdo do arquivo remoto
content = server.read('/etc/os-release')

# Enviar arquivo local para o servidor remoto
server.upload('/local/app.tar.gz', '/var/www/app.tar.gz')

# Baixar arquivo remoto para o disco local
server.download('/var/log/nginx/access.log', './logs/access.log')

Manipulação Remota de Conteúdo

# Substituir todo o conteúdo
server.replace :all, 'new configuration text', '/etc/app/config.env'

# Substituição via regex
server.replace /^PORT=\d+$/, 'PORT=8080', '/etc/app/config.env'

# Anexar conteúdo (no final por padrão, ou no topo)
server.append 'export PATH=$PATH:/opt/bin', '~/.bashrc'
server.append '# Autogenerated File', '/etc/motd', :top

Prompts Interativos

# Solicitar entrada do usuário
answer = server.ask 'Enter deployment tag:'

# Confirmação Sim/Não
if server.yes? 'Do you want to run database migrations?'
  server.run 'bundle exec rake db:migrate'
end

# Aguardar pressionamento de Enter
server.wait

Temas relacionados