97 lines
2.3 KiB
Markdown
97 lines
2.3 KiB
Markdown
---
|
|
title: Do gem
|
|
category: Ruby libraries
|
|
---
|
|
|
|
### About
|
|
{: .-intro}
|
|
|
|
* [DAddYE/do](https://github.com/DAddYE/do)
|
|
|
|
### Connection
|
|
|
|
server = DO::Server.new('srv1', 'srv1.domain.local', 'root', :key =>
|
|
%w[srv1.pem]
|
|
|
|
### Run
|
|
server.run 'uname'
|
|
# root@srv1 ~ # uname
|
|
# Linux
|
|
|
|
server.run 'uname', '-a'
|
|
# root@srv1 ~ # uname -a
|
|
# Linux srv1.lipsiasoft.net 2.6.18-194.32.1.el5 x86_64 x86_64 x86_64 GNU/Linux
|
|
|
|
server.run 'mysqladmin -u root -p password "oldone"', 'newpassword'
|
|
# root@srv1 ~ # mysqladmin -u root -p password 'oldone'
|
|
# Enter password: oldone
|
|
# mysqladmin: connect to server at 'localhost' failed
|
|
# error: 'Access denied for user 'root'@'localhost' (using password: YES)'
|
|
|
|
### Files
|
|
|
|
server.exist?('~/.ssh')
|
|
# root@srv1 ~ # test -e ~/.ssh && echo True
|
|
# => true
|
|
|
|
server.read('/etc/redhat-release')
|
|
# root@srv1 ~ # cat /etc/redhat-release
|
|
# => "CentOS release 5.5 (Final)"
|
|
|
|
### Upload/download
|
|
|
|
server.upload '/tmp/file', '/tmp/foo'
|
|
# root@srv1 ~ # upload from '/tmp/file' to '/tmp/foo'
|
|
|
|
server.download '/tmp/foo', '/tmp/file2'
|
|
# root@srv1 ~ # download from '/tmp/foo' to '/tmp/file2'
|
|
|
|
### Replace
|
|
|
|
server.replace :all, 'new content', '/tmp/file'
|
|
# root@srv1 ~ # replace all in '/tmp/foo'
|
|
|
|
server.read('/tmp/foo')
|
|
# root@srv1 ~ # cat /tmp/foo
|
|
# => "new content"
|
|
|
|
### Replace via regex
|
|
|
|
server.replace /content$/, 'changed content', '/tmp/foo'
|
|
# root@srv1 ~ # replace /content$/ in '/tmp/foo'
|
|
|
|
server.read('/tmp/foo')
|
|
# root@srv1 ~ # cat /tmp/foo
|
|
# => "new changed content"
|
|
|
|
### Append
|
|
|
|
server.append('appended', '/tmp/foo')
|
|
# root@srv1 ~ # append to 'bottom' in '/tmp/foo'
|
|
|
|
server.read('/tmp/foo')
|
|
# root@srv1 ~ # cat /tmp/foo
|
|
# => "new changed contentappended"
|
|
|
|
### Append to top
|
|
|
|
server.append('---', '/tmp/foo', :top)
|
|
# root@srv1 ~ # append to 'top' in '/tmp/foo'
|
|
|
|
server.read('/tmp/foo')
|
|
# root@srv1 ~ # cat /tmp/foo
|
|
# => "---new changed contentappended"
|
|
|
|
### Prompt
|
|
|
|
server.ask "Please choose"
|
|
# root@srv1 ~ # Please choose: foo
|
|
# => "foo"
|
|
|
|
server.yes? "Do you want to proceed"
|
|
# root@srv1 ~ # Do you want to proceed? (y/n): y
|
|
# => 0
|
|
|
|
server.wait
|
|
# Press ENTER to continue...
|