servicesnapshot 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/bin/servicesnapshot +41 -40
- data/lib/helper_functions.rb +47 -51
- data/lib/snapshot/beanstalk.rb +77 -0
- data/lib/snapshot/fluiddb.rb +49 -0
- data/lib/snapshot/shell.rb +10 -0
- data/lib/snapshot/ssh.rb +16 -0
- metadata +13 -15
- data/lib/Snapshot/Beanstalk.rb +0 -78
- data/lib/Snapshot/FluidDb.rb +0 -49
- data/lib/Snapshot/Shell.rb +0 -12
- data/lib/Snapshot/Ssh.rb +0 -16
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8ff1d8a4e278cdeb225dde49082679043898486f
|
4
|
+
data.tar.gz: 731652a097ababe477e5d2462c00e56656813ed2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d50205d5695f7a9245494378bbe44fbbb1151606cd848a1e360c9d3dadd6fac5adaeb70d1993e5ac4691094e7eaed6f07ce7f4df39f2000fbf5932a0184e6dc3
|
7
|
+
data.tar.gz: e3d1fddf8039c1c2e1a9843c19d714e100a7fdc63937425a5ac323df675d626b13fcc05bae44514fb0da58a5c4db4d4e0552fcaacbcbe5c751fcc9f2ee18ea8b
|
data/bin/servicesnapshot
CHANGED
@@ -1,53 +1,54 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
#Add the currently running directory to the start of the load path
|
3
|
+
# Add the currently running directory to the start of the load path
|
4
4
|
$:.unshift './'
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
6
|
+
require 'helper_functions'
|
7
|
+
require 'snapshot/Ssh'
|
8
|
+
require 'snapshot/Beanstalk'
|
9
|
+
require 'snapshot/Shell'
|
10
|
+
require 'snapshot/FluidDb'
|
11
11
|
|
12
|
-
#Don't buffer stdout
|
12
|
+
# Don't buffer stdout
|
13
13
|
$stdout.sync = true
|
14
14
|
|
15
|
-
if ARGV.length != 1
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
puts
|
25
|
-
|
26
|
-
|
15
|
+
if ARGV.length != 1
|
16
|
+
puts 'Available dsl''s'
|
17
|
+
puts '==============='
|
18
|
+
puts '=== ./'
|
19
|
+
Dir.glob('./*.dsl').each do |dsl_file_name|
|
20
|
+
puts File.basename(dsl_file_name)
|
21
|
+
end
|
22
|
+
puts "=== #{ENV['HOME']}/servicesnapshot/"
|
23
|
+
Dir.glob("#{ENV['HOME']}/servicesnapshot/*.dsl").each do |dsl_file_name|
|
24
|
+
puts File.basename(dsl_file_name)
|
25
|
+
end
|
26
|
+
puts '==============='
|
27
|
+
|
28
|
+
abort('Usage: servicesnapshot <path to dsl>') if ARGV.length != 1
|
27
29
|
end
|
28
30
|
|
29
|
-
|
31
|
+
dsl_name = get_file_name(ARGV[0])
|
30
32
|
|
31
|
-
#Need to remove file name extension
|
32
|
-
ENV[
|
33
|
+
# Need to remove file name extension
|
34
|
+
ENV['APP_NAME'] = File.basename(dsl_name) if ENV['APP_NAME'].nil?
|
33
35
|
|
34
|
-
log "Loading dsl, #{
|
36
|
+
log "Loading dsl, #{dsl_name}", true
|
35
37
|
begin
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
puts
|
49
|
-
|
50
|
-
|
51
|
-
|
38
|
+
load dsl_name
|
39
|
+
rescue ArgumentError
|
40
|
+
puts '*** Your dsl is not formatted correctly'
|
41
|
+
puts '*** Ensure each line has the format,'
|
42
|
+
puts '*** <command>, [:arg=>value]'
|
43
|
+
rescue ParameterMissingError => e
|
44
|
+
puts e.message
|
45
|
+
|
46
|
+
rescue SystemExit
|
47
|
+
puts 'SystemExit ...'
|
48
|
+
|
49
|
+
rescue StandardError => e
|
50
|
+
puts 'What the ...'
|
51
|
+
puts e.class.name
|
52
|
+
puts e.message
|
53
|
+
puts e.backtrace
|
52
54
|
end
|
53
|
-
|
data/lib/helper_functions.rb
CHANGED
@@ -1,74 +1,70 @@
|
|
1
|
-
require
|
1
|
+
require 'net/ssh/gateway'
|
2
2
|
|
3
|
-
class ParameterMissingError<StandardError
|
3
|
+
class ParameterMissingError < StandardError
|
4
4
|
end
|
5
5
|
|
6
|
-
def get_param(
|
7
|
-
|
8
|
-
|
6
|
+
def get_param(params, name, usage)
|
7
|
+
return params[name] unless params[name].nil?
|
8
|
+
return ENV[name.to_s] unless ENV[name.to_s].nil?
|
9
9
|
|
10
|
+
msg = "*** Could not find parameter, #{name}, for command, " \
|
11
|
+
"#{caller[0][/`.*'/][1..-2]}\n" \
|
12
|
+
"*** #{usage}\n" \
|
13
|
+
"*** Try :#{name}=>'YourValue'"
|
10
14
|
|
11
|
-
|
12
|
-
*** #{usage}
|
13
|
-
*** Try :#{name.to_s}=>'YourValue'
|
14
|
-
}
|
15
|
-
|
16
|
-
raise ParameterMissingError.new( msg )
|
15
|
+
fail ParameterMissingError, msg
|
17
16
|
end
|
18
17
|
|
19
|
-
def env(
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
def env(*args)
|
19
|
+
fail 'Must have an even number of argument to env' if args.length.odd?
|
20
|
+
|
21
|
+
(0..args.length - 1).step(2) do |i|
|
22
|
+
ENV[args[i]] = args[i + 1]
|
23
|
+
end
|
25
24
|
end
|
26
25
|
|
27
|
-
def open_gateway(
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
26
|
+
def open_gateway(user, host)
|
27
|
+
log "Opening SSH Gateway to, #{host}", true
|
28
|
+
gateway = Net::SSH::Gateway.new(host, user)
|
29
|
+
local_port = 29_000
|
30
|
+
opened = false
|
31
|
+
while opened == false
|
32
|
+
local_port += 1
|
33
|
+
begin
|
34
|
+
gateway.open('127.0.0.1', 11_300, local_port)
|
35
|
+
opened = true
|
36
|
+
rescue Errno::EADDRINUSE
|
37
|
+
log "Errno::EADDRINUSE: #{local_port}, Trying next port up.", true
|
39
38
|
end
|
40
|
-
|
39
|
+
end
|
40
|
+
[local_port, gateway]
|
41
41
|
end
|
42
42
|
|
43
|
+
def log(string, verbose = false)
|
44
|
+
return if ENV['TESTING'] == 'true'
|
45
|
+
return unless !ENV['VERBOSE'].nil? || verbose == false
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
type = verbose ? "VERB" : "INFO"
|
48
|
-
if !ENV["VERBOSE"].nil? || verbose==false then
|
49
|
-
timestamp = Time.new.strftime( "%Y-%m-%d %H:%M:%S" )
|
50
|
-
puts "[#{type}] #{timestamp} :: #{string}"
|
51
|
-
end
|
47
|
+
type = verbose ? 'VERB' : 'INFO'
|
48
|
+
timestamp = Time.new.strftime('%Y-%m-%d %H:%M:%S')
|
49
|
+
puts "[#{type}] #{timestamp} :: #{string}"
|
52
50
|
end
|
53
51
|
|
54
|
-
def
|
55
|
-
|
52
|
+
def format_output(title, content)
|
53
|
+
puts "\n===> #{title} <===\n#{content}"
|
56
54
|
end
|
57
55
|
|
58
|
-
def
|
59
|
-
|
56
|
+
def dsl_directory
|
57
|
+
"#{ENV['HOME']}/servicesnapshot"
|
60
58
|
end
|
61
59
|
|
60
|
+
def get_file_name(path)
|
61
|
+
path = "#{path}.dsl" if File.extname(path) == ''
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
p = path
|
67
|
-
return p if File.exists?( p )
|
63
|
+
p = path
|
64
|
+
return p if File.exist?(p)
|
68
65
|
|
69
|
-
|
70
|
-
|
66
|
+
p = "#{dsl_directory}/#{path}"
|
67
|
+
return p if File.exist?(p)
|
71
68
|
|
72
|
-
|
69
|
+
abort("Could not find the dsl you passed in, #{path}")
|
73
70
|
end
|
74
|
-
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'beanstalk-client'
|
2
|
+
|
3
|
+
def beanstalk_queue(params)
|
4
|
+
usage = "beanstalk_queue :user=><username>, :host=><hostname>, :queue=><queue|[queue1,queue2,...]>"
|
5
|
+
user = get_param(params, :user, usage)
|
6
|
+
host = get_param(params, :host, usage)
|
7
|
+
queue = get_param(params, :queue, usage)
|
8
|
+
|
9
|
+
local_port, gateway = open_gateway( user, host )
|
10
|
+
|
11
|
+
destination_url = "127.0.0.1:#{local_port}"
|
12
|
+
log "Opened SSH Gateway to, #{host}, on, #{destination_url}", true
|
13
|
+
list = []
|
14
|
+
log 'Connect to remote beanstalk', true
|
15
|
+
beanstalk = Beanstalk::Pool.new([destination_url])
|
16
|
+
beanstalk.watch(queue)
|
17
|
+
tube_stats = beanstalk.stats_tube(queue)
|
18
|
+
index = tube_stats['current-jobs-ready'].to_i
|
19
|
+
log "Current number of msgs in tube, #{index}", true
|
20
|
+
job_list = []
|
21
|
+
list = []
|
22
|
+
1.upto(index) do
|
23
|
+
job = beanstalk.reserve 1
|
24
|
+
job_list << job
|
25
|
+
list << job.body
|
26
|
+
end
|
27
|
+
|
28
|
+
job_list.each do |job|
|
29
|
+
job.release
|
30
|
+
end
|
31
|
+
|
32
|
+
title = "# beanstalk_queue: #{user}@#{host} #{queue}"
|
33
|
+
format_output(title, "\n==> MSG <==\n" + list.join("\n==> MSG <==\n") +
|
34
|
+
"\n\n")
|
35
|
+
end
|
36
|
+
|
37
|
+
def beanstalk(params)
|
38
|
+
usage = 'beanstalk :user=><username>, :host=><hostname>, ' \
|
39
|
+
':queues=><queue|[queue1,queue2,...]>'
|
40
|
+
user = get_param(params, :user, usage)
|
41
|
+
host = get_param(params, :host, usage)
|
42
|
+
|
43
|
+
queues = nil
|
44
|
+
begin
|
45
|
+
queues = get_param(params, :queues, usage)
|
46
|
+
rescue ParameterMissingError => e
|
47
|
+
# log "beanstalk.ParameterMissingError. #{e.message}"
|
48
|
+
end
|
49
|
+
queues = [queues] if queues.class.name == 'String'
|
50
|
+
|
51
|
+
local_port, _gateway = open_gateway(user, host)
|
52
|
+
|
53
|
+
destination_url = "127.0.0.1:#{local_port}"
|
54
|
+
log "Opened SSH Gateway to, #{host}, on, #{destination_url}", true
|
55
|
+
list = []
|
56
|
+
log 'Connect to remote beanstalk', true
|
57
|
+
beanstalk = Beanstalk::Pool.new([destination_url])
|
58
|
+
|
59
|
+
hash = {}
|
60
|
+
beanstalk.list_tubes[destination_url].each do |name|
|
61
|
+
tube_stats = beanstalk.stats_tube(name)
|
62
|
+
hash[name] = tube_stats['current-jobs-ready'].to_s
|
63
|
+
end
|
64
|
+
|
65
|
+
if queues.nil?
|
66
|
+
hash.each do |k, v|
|
67
|
+
list << "#{k}(#{v})"
|
68
|
+
end
|
69
|
+
else
|
70
|
+
queues.each do |k|
|
71
|
+
list << "#{k}(#{hash[k]})"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
title = "beanstalk: #{user}@#{host} #{queues}"
|
76
|
+
format_output(title, list.join("\n"))
|
77
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'FluidDb'
|
2
|
+
|
3
|
+
def pad_string_with_white_space(string, length)
|
4
|
+
while string.length <= length + 1
|
5
|
+
string += ' '
|
6
|
+
end
|
7
|
+
string
|
8
|
+
end
|
9
|
+
|
10
|
+
def fluiddb(params)
|
11
|
+
usage = 'fluiddb :uri=><uri>, :sql=><sql>'
|
12
|
+
uri_string = get_param(params, :uri, usage)
|
13
|
+
sql_string = get_param(params, :sql, usage)
|
14
|
+
|
15
|
+
db = FluidDb::Db(URI.parse(uri_string))
|
16
|
+
list = db.queryForResultset(sql_string, [])
|
17
|
+
content = ''
|
18
|
+
if list.count == 0
|
19
|
+
content = 'No rows returned'
|
20
|
+
else
|
21
|
+
|
22
|
+
max_width = Array.new(list[0].keys.length, 0)
|
23
|
+
list[0].keys.each_with_index do |k, idx|
|
24
|
+
max_width[idx] = k.length if max_width[idx] < k.length
|
25
|
+
list.each do |row|
|
26
|
+
max_width[idx] = row[k].to_s.length if max_width[idx] < row[k].to_s.length
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
field_names = ''
|
31
|
+
under_lines = ''
|
32
|
+
list[0].keys.each_with_index do |field_name, idx|
|
33
|
+
field_names += pad_string_with_white_space(field_name, max_width[idx])
|
34
|
+
under_lines += pad_string_with_white_space('=' * max_width[idx], max_width[idx])
|
35
|
+
end
|
36
|
+
|
37
|
+
content = "#{field_names}\n#{under_lines}\n"
|
38
|
+
|
39
|
+
list.each do |row|
|
40
|
+
row.values.each_with_index do |v, idx|
|
41
|
+
content += pad_string_with_white_space(v.to_s, max_width[idx])
|
42
|
+
end
|
43
|
+
content += "\n"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
title = "fluiddb: #{uri_string} = #{sql_string}"
|
48
|
+
format_output(title, content)
|
49
|
+
end
|
data/lib/snapshot/ssh.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
|
3
|
+
def ssh(params)
|
4
|
+
usage = 'ssh :user=><username>, :host=><hostname>, :queues=><queue|[queue1,queue2,...]>'
|
5
|
+
user = get_param(params, :user, usage)
|
6
|
+
host = get_param(params, :host, usage)
|
7
|
+
cmd = get_param(params, :cmd, usage)
|
8
|
+
|
9
|
+
content = ''
|
10
|
+
Net::SSH.start(host, user) do |ssh|
|
11
|
+
content = ssh.exec!(cmd)
|
12
|
+
end
|
13
|
+
|
14
|
+
title = "ssh: #{user}@#{host} #{cmd}"
|
15
|
+
format_output(title, content)
|
16
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: servicesnapshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Guy Irvine
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-08-16 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: The fastest way to get a snapshot of your system.
|
15
14
|
email: guy@guyirvine.com
|
@@ -19,36 +18,35 @@ extensions: []
|
|
19
18
|
extra_rdoc_files: []
|
20
19
|
files:
|
21
20
|
- lib/helper_functions.rb
|
22
|
-
- lib/
|
23
|
-
- lib/
|
24
|
-
- lib/
|
25
|
-
- lib/
|
21
|
+
- lib/snapshot/beanstalk.rb
|
22
|
+
- lib/snapshot/fluiddb.rb
|
23
|
+
- lib/snapshot/shell.rb
|
24
|
+
- lib/snapshot/ssh.rb
|
26
25
|
- bin/servicesnapshot
|
27
26
|
- LICENSE
|
28
27
|
- README.md
|
29
28
|
homepage: http://rubygems.org/gems/servicesnapshot
|
30
|
-
licenses:
|
29
|
+
licenses:
|
30
|
+
- LGPL-3.0
|
31
|
+
metadata: {}
|
31
32
|
post_install_message:
|
32
33
|
rdoc_options: []
|
33
34
|
require_paths:
|
34
35
|
- lib
|
35
36
|
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
42
|
requirements:
|
44
|
-
- -
|
43
|
+
- - '>='
|
45
44
|
- !ruby/object:Gem::Version
|
46
45
|
version: '0'
|
47
46
|
requirements: []
|
48
47
|
rubyforge_project:
|
49
|
-
rubygems_version:
|
48
|
+
rubygems_version: 2.0.14.1
|
50
49
|
signing_key:
|
51
|
-
specification_version:
|
50
|
+
specification_version: 4
|
52
51
|
summary: ServiceSnapshot
|
53
52
|
test_files: []
|
54
|
-
has_rdoc:
|
data/lib/Snapshot/Beanstalk.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
require "beanstalk-client"
|
2
|
-
|
3
|
-
def beanstalk_queue( params )
|
4
|
-
|
5
|
-
usage = "beanstalk_queue :user=><username>, :host=><hostname>, :queue=><queue|[queue1,queue2,...]>"
|
6
|
-
user = get_param( params, :user, usage )
|
7
|
-
host = get_param( params, :host, usage )
|
8
|
-
queue = get_param( params, :queue, usage )
|
9
|
-
|
10
|
-
|
11
|
-
localPort, gateway = open_gateway( user, host )
|
12
|
-
|
13
|
-
destinationUrl = "127.0.0.1:#{localPort}"
|
14
|
-
log "Opened SSH Gateway to, #{host}, on, #{destinationUrl}", true
|
15
|
-
list = Array.new
|
16
|
-
log "Connect to remote beanstalk", true
|
17
|
-
beanstalk = Beanstalk::Pool.new([destinationUrl])
|
18
|
-
beanstalk.watch( queue )
|
19
|
-
tubeStats = beanstalk.stats_tube( queue )
|
20
|
-
index = tubeStats["current-jobs-ready"].to_i
|
21
|
-
log "Current number of msgs in tube, #{index}", true
|
22
|
-
jobList = Array.new
|
23
|
-
list = Array.new
|
24
|
-
1.upto(index) do
|
25
|
-
job = beanstalk.reserve 1
|
26
|
-
jobList << job
|
27
|
-
list << job.body
|
28
|
-
end
|
29
|
-
|
30
|
-
jobList.each do |job|
|
31
|
-
job.release
|
32
|
-
end
|
33
|
-
|
34
|
-
title = "# beanstalk_queue: #{user}@#{host} #{queue}"
|
35
|
-
formatOutput( title, "\n==> MSG <==\n\n" + list.join( "\n==> MSG <==\n\n" ) + "\n\n" )
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
def beanstalk( params )
|
40
|
-
usage = "beanstalk :user=><username>, :host=><hostname>, :queues=><queue|[queue1,queue2,...]>"
|
41
|
-
user = get_param( params, :user, usage )
|
42
|
-
host = get_param( params, :host, usage )
|
43
|
-
|
44
|
-
queues = nil
|
45
|
-
begin
|
46
|
-
queues = get_param( params, :queues, usage )
|
47
|
-
rescue ParameterMissingError=>e
|
48
|
-
end
|
49
|
-
queues = [queues] if queues.class.name == "String"
|
50
|
-
|
51
|
-
localPort, gateway = open_gateway( user, host )
|
52
|
-
|
53
|
-
destinationUrl = "127.0.0.1:#{localPort}"
|
54
|
-
log "Opened SSH Gateway to, #{host}, on, #{destinationUrl}", true
|
55
|
-
list = Array.new
|
56
|
-
log "Connect to remote beanstalk", true
|
57
|
-
beanstalk = Beanstalk::Pool.new([destinationUrl])
|
58
|
-
|
59
|
-
hash = Hash.new
|
60
|
-
beanstalk.list_tubes[destinationUrl].each do |name|
|
61
|
-
tubeStats = beanstalk.stats_tube(name)
|
62
|
-
hash[name] = tubeStats["current-jobs-ready"].to_s
|
63
|
-
end
|
64
|
-
|
65
|
-
if queues.nil? then
|
66
|
-
hash.each do |k,v|
|
67
|
-
list << "#{k}(#{v})"
|
68
|
-
end
|
69
|
-
else
|
70
|
-
queues.each do |k|
|
71
|
-
list << "#{k}(#{hash[k]})"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
title = "beanstalk: #{user}@#{host} #{queues}"
|
76
|
-
formatOutput( title, list.join( "\n" ) )
|
77
|
-
end
|
78
|
-
|
data/lib/Snapshot/FluidDb.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require "FluidDb"
|
2
|
-
|
3
|
-
def padStringWithWhiteSpace( string, length )
|
4
|
-
while string.length <= length+1
|
5
|
-
string = string + " "
|
6
|
-
end
|
7
|
-
return string
|
8
|
-
end
|
9
|
-
|
10
|
-
def fluiddb( params )
|
11
|
-
usage = "fluiddb :uri=><uri>, :sql=><sql>"
|
12
|
-
uri_string = get_param( params, :uri, usage )
|
13
|
-
sql_string = get_param( params, :sql, usage )
|
14
|
-
|
15
|
-
db = FluidDb::Db( URI.parse( uri_string ) )
|
16
|
-
list = db.queryForResultset( sql_string, [] )
|
17
|
-
content = ""
|
18
|
-
if list.count == 0 then
|
19
|
-
content = "No rows returned"
|
20
|
-
else
|
21
|
-
|
22
|
-
max_width = Array.new( list[0].keys.length, 0 )
|
23
|
-
list[0].keys.each_with_index do |k,idx|
|
24
|
-
max_width[idx] = k.length if max_width[idx] < k.length
|
25
|
-
list.each do |row|
|
26
|
-
max_width[idx] = row[k].to_s.length if max_width[idx] < row[k].to_s.length
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
fieldNames = ""
|
31
|
-
underLines = ""
|
32
|
-
list[0].keys.each_with_index do |fieldName, idx|
|
33
|
-
fieldNames = fieldNames + padStringWithWhiteSpace( fieldName, max_width[idx])
|
34
|
-
underLines = underLines + padStringWithWhiteSpace( "=" * max_width[idx], max_width[idx])
|
35
|
-
end
|
36
|
-
|
37
|
-
content = "#{fieldNames}\n#{underLines}\n"
|
38
|
-
|
39
|
-
list.each do |row|
|
40
|
-
row.values.each_with_index do |v,idx|
|
41
|
-
content = content + padStringWithWhiteSpace( v.to_s, max_width[idx])
|
42
|
-
end
|
43
|
-
content = content + "\n"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
title = "fluiddb: #{uri_string} = #{sql_string}"
|
48
|
-
formatOutput( title, content )
|
49
|
-
end
|
data/lib/Snapshot/Shell.rb
DELETED
data/lib/Snapshot/Ssh.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require "net/ssh"
|
2
|
-
|
3
|
-
def ssh( params )
|
4
|
-
usage = "ssh :user=><username>, :host=><hostname>, :queues=><queue|[queue1,queue2,...]>"
|
5
|
-
user = get_param( params, :user, usage )
|
6
|
-
host = get_param( params, :host, usage )
|
7
|
-
cmd = get_param( params, :cmd, usage )
|
8
|
-
|
9
|
-
content = ""
|
10
|
-
Net::SSH.start(host, user) do |ssh|
|
11
|
-
content = ssh.exec!(cmd)
|
12
|
-
end
|
13
|
-
|
14
|
-
title = "ssh: #{user}@#{host} #{cmd}"
|
15
|
-
formatOutput( title, content )
|
16
|
-
end
|