クイックリファレンス

Do(Ruby リモート実行 Gem)チートシート

Ruby gem「DO」のクイックリファレンス:SSH サーバー接続、リモートコマンド実行、ファイル確認・アップロード/ダウンロード、リモートファイル編集を解説。

· 公開日

DO は、リモート Linux サーバー上で SSH 経由のコマンド実行やファイル管理を行うための、直感的でチェーン可能な DSL を提供する Ruby gem です。

サーバー接続

require 'do'

# SSH 鍵認証を使用して接続を初期化
server = DO::Server.new('srv1', 'node1.example.com', 'root', key: ['~/.ssh/id_rsa'])

コマンドの実行

# 単一コマンド
output = server.run 'uname -a'

# 複数のコマンド引数
server.run 'apt-get', 'update', '-y'

# 標準入力プロンプトへの自動応答付きコマンド
server.run 'passwd user', 'newpassword', 'newpassword'

ファイル確認&転送

# ファイルの存在確認
server.exist?('/etc/nginx/nginx.conf') # → true / false

# リモートファイルの内容を読み取り
content = server.read('/etc/os-release')

# ローカルファイルをリモートサーバーへアップロード
server.upload('/local/app.tar.gz', '/var/www/app.tar.gz')

# リモートファイルをローカルディスクへダウンロード
server.download('/var/log/nginx/access.log', './logs/access.log')

リモートファイル内容の操作

# 内容全体を置換
server.replace :all, 'new configuration text', '/etc/app/config.env'

# 正規表現による置換
server.replace /^PORT=\d+$/, 'PORT=8080', '/etc/app/config.env'

# 内容の追記(デフォルトは末尾、:top で先頭)
server.append 'export PATH=$PATH:/opt/bin', '~/.bashrc'
server.append '# Autogenerated File', '/etc/motd', :top

対話プロンプト

# ユーザーに入力を促す
answer = server.ask 'Enter deployment tag:'

# Yes/No 確認
if server.yes? 'Do you want to run database migrations?'
  server.run 'bundle exec rake db:migrate'
end

# Enter キーの押下を待機
server.wait

関連テーマ