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'
# 표준 입력(stdin) 프롬프트 응답을 포함한 명령
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'
# 내용 추가 (기본값은 맨 아래, 또는 맨 위)
server.append 'export PATH=$PATH:/opt/bin', '~/.bashrc'
server.append '# Autogenerated File', '/etc/motd', :top
대화형 프롬프트
# 사용자에게 입력 요청
answer = server.ask 'Enter deployment tag:'
# 예/아니요 확인
if server.yes? 'Do you want to run database migrations?'
server.run 'bundle exec rake db:migrate'
end
# Enter 키 입력 대기
server.wait