octosh 0.0.4 → 0.0.5
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.
- data/Gemfile +1 -0
- data/Gemfile.lock +8 -0
- data/lib/octosh/cli.rb +16 -3
- data/lib/octosh/version.rb +1 -1
- data/lib/octosh/worker/worker.rb +19 -1
- metadata +1 -1
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -3,9 +3,12 @@ GEM
|
|
3
3
|
specs:
|
4
4
|
diff-lcs (1.1.3)
|
5
5
|
highline (1.6.15)
|
6
|
+
macaddr (1.6.1)
|
7
|
+
systemu (~> 2.5.0)
|
6
8
|
net-scp (1.0.4)
|
7
9
|
net-ssh (>= 1.99.1)
|
8
10
|
net-ssh (2.6.1)
|
11
|
+
parallel (0.5.19)
|
9
12
|
rake (0.9.2.2)
|
10
13
|
rspec (2.12.0)
|
11
14
|
rspec-core (~> 2.12.0)
|
@@ -15,6 +18,9 @@ GEM
|
|
15
18
|
rspec-expectations (2.12.0)
|
16
19
|
diff-lcs (~> 1.1.3)
|
17
20
|
rspec-mocks (2.12.0)
|
21
|
+
systemu (2.5.2)
|
22
|
+
uuid (2.3.5)
|
23
|
+
macaddr (~> 1.0)
|
18
24
|
|
19
25
|
PLATFORMS
|
20
26
|
ruby
|
@@ -23,6 +29,8 @@ DEPENDENCIES
|
|
23
29
|
highline (= 1.6.15)
|
24
30
|
net-scp (= 1.0.4)
|
25
31
|
net-ssh (= 2.6.1)
|
32
|
+
parallel (= 0.5.19)
|
26
33
|
rake (= 0.9.2.2)
|
27
34
|
rspec (= 2.12.0)
|
28
35
|
rspec-mocks (= 2.12.0)
|
36
|
+
uuid (= 2.3.5)
|
data/lib/octosh/cli.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'ostruct'
|
3
|
+
require 'parallel'
|
3
4
|
|
4
5
|
$:.push File.dirname(__FILE__) + '../'
|
5
6
|
require 'octosh'
|
@@ -108,6 +109,8 @@ module Octosh
|
|
108
109
|
end
|
109
110
|
|
110
111
|
def self.inline_bash(hosts, bash, user, password_prompt=true, uniform_password=false)
|
112
|
+
workers = []
|
113
|
+
|
111
114
|
hosts.each do |host|
|
112
115
|
prompt_for_password(password_prompt, uniform_password)
|
113
116
|
exec_user,hostname = ""
|
@@ -119,12 +122,17 @@ module Octosh
|
|
119
122
|
hostname = host
|
120
123
|
end
|
121
124
|
worker = Octosh::Worker.new(hostname, exec_user, @password)
|
122
|
-
|
123
|
-
|
125
|
+
workers << worker
|
126
|
+
end
|
127
|
+
|
128
|
+
Parallel.each(workers, :in_threads => workers.length) do |worker|
|
129
|
+
puts "#{worker.host} -- #{worker.exec(bash)}"
|
124
130
|
end
|
125
131
|
end
|
126
132
|
|
127
133
|
def self.exec_script(hosts, script, user, password_prompt=true, uniform_password=false)
|
134
|
+
workers = []
|
135
|
+
|
128
136
|
hosts.each do |host|
|
129
137
|
prompt_for_password(password_prompt, uniform_password)
|
130
138
|
exec_user,hostname = ""
|
@@ -136,8 +144,13 @@ module Octosh
|
|
136
144
|
hostname = host
|
137
145
|
end
|
138
146
|
worker = Octosh::Worker.new(hostname, exec_user, @password)
|
139
|
-
|
147
|
+
workers << worker
|
148
|
+
end
|
149
|
+
|
150
|
+
Parallel.each(workers, :in_threads => workers.length) do |worker|
|
151
|
+
puts "#{worker.host} -- #{worker.exec_script(script)}"
|
140
152
|
end
|
153
|
+
|
141
154
|
end
|
142
155
|
|
143
156
|
end
|
data/lib/octosh/version.rb
CHANGED
data/lib/octosh/worker/worker.rb
CHANGED
@@ -17,7 +17,25 @@ module Octosh
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def exec(command)
|
20
|
-
|
20
|
+
channel = @ssh.open_channel do |ch|
|
21
|
+
ch.exec(command) do |ch, success|
|
22
|
+
raise "Error executing #{command}" unless success
|
23
|
+
|
24
|
+
ch.on_data do |c, data|
|
25
|
+
puts "#{@host} -- #{data.to_s}"
|
26
|
+
end
|
27
|
+
|
28
|
+
ch.on_extended_data do |c, type, data|
|
29
|
+
puts "#{@host} -- #{data}"
|
30
|
+
end
|
31
|
+
|
32
|
+
ch.on_close do
|
33
|
+
puts "Octosh execution complete!"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
channel.wait
|
21
39
|
end
|
22
40
|
|
23
41
|
def put(local_path, remote_path)
|