cast-ssh 0.1.8 → 0.1.9
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/cast +2 -1
- data/lib/cast.rb +14 -6
- metadata +22 -34
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 37009c124655311f2e1243b095350dd8e288703d
|
4
|
+
data.tar.gz: a4d19f749ba99a3e0e7623553e7085fe63033791
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9a3d926ad83c436dae5f8c68ae14e53bddedf7556784309faa4b364b9406da455c68d609a12673330a9f8b885cb170e858f0ba10e5499794e8eec0cb595bb0c4
|
7
|
+
data.tar.gz: a0223e63aafcbfcbf34c69a96dbd5187571304901a5d4775442957ccaa5a2862d2008475b6edc20cd024c16c14ef89de7693142c5cd76ed481100c7bf24edc74
|
data/bin/cast
CHANGED
@@ -35,6 +35,7 @@ EOS
|
|
35
35
|
opt :clusters, 'Print out only groupnames without executing command', :short => 'c'
|
36
36
|
opt :ssh, 'SSH command to run', :default => 'ssh'
|
37
37
|
opt :strict, 'Return a non-zero exit code if ANY of the ssh commands exit non-zero', :short => 't'
|
38
|
+
opt :controlfolder, 'Path to look in for any ControlMaster tunnels', :short => 'o', :default => '~/.ssh/'
|
38
39
|
end
|
39
40
|
|
40
41
|
opt = Trollop::with_standard_exception_handling p do
|
@@ -58,7 +59,7 @@ end
|
|
58
59
|
cmd = ARGV[1..-1].join(' ')
|
59
60
|
hosts = Cast::expand_groups ARGV[0].split(','), groups
|
60
61
|
|
61
|
-
result = Cast::run hosts, cmd, opt[:serial], opt[:delay], opt[:ssh], opt[:strict]
|
62
|
+
result = Cast::run hosts, cmd, opt[:serial], opt[:delay], opt[:ssh], opt[:strict], opt[:controlfolder]
|
62
63
|
if opt[:strict] and not result
|
63
64
|
exit 1
|
64
65
|
end
|
data/lib/cast.rb
CHANGED
@@ -8,7 +8,7 @@ STDOUT.sync = true
|
|
8
8
|
STDERR.sync = true
|
9
9
|
|
10
10
|
module Cast
|
11
|
-
VERSION = '0.1.
|
11
|
+
VERSION = '0.1.9'
|
12
12
|
DEFAULTGROUPS = '~/.cast.yml'
|
13
13
|
|
14
14
|
@@mux = Mutex.new
|
@@ -51,11 +51,14 @@ module Cast
|
|
51
51
|
return hosts.uniq
|
52
52
|
end
|
53
53
|
|
54
|
-
def self.run hosts, cmd, serial = false, delay = nil, ssh = 'ssh', strict = false
|
54
|
+
def self.run hosts, cmd, serial = false, delay = nil, ssh = 'ssh', strict = false, controlfolder = nil
|
55
|
+
if controlfolder != nil
|
56
|
+
controlfolder = File.expand_path(controlfolder)
|
57
|
+
end
|
55
58
|
success = true
|
56
59
|
if serial or delay
|
57
60
|
hosts.each_with_index do |host, i|
|
58
|
-
exitCode = remote host, cmd, ssh
|
61
|
+
exitCode = remote host, cmd, ssh, controlfolder
|
59
62
|
if strict
|
60
63
|
success &&= (exitCode == 0)
|
61
64
|
end
|
@@ -65,7 +68,7 @@ module Cast
|
|
65
68
|
end
|
66
69
|
end
|
67
70
|
else
|
68
|
-
exitCodes = hosts.pmap { |host| remote host, cmd, ssh }
|
71
|
+
exitCodes = hosts.pmap { |host| remote host, cmd, ssh, controlfolder }
|
69
72
|
if strict
|
70
73
|
success = (exitCodes.reduce(:+) == 0)
|
71
74
|
end
|
@@ -73,8 +76,13 @@ module Cast
|
|
73
76
|
return success
|
74
77
|
end
|
75
78
|
|
76
|
-
def self.remote host, cmd, ssh = 'ssh'
|
77
|
-
|
79
|
+
def self.remote host, cmd, ssh = 'ssh', controlfolder = nil
|
80
|
+
controlpath = ""
|
81
|
+
if controlfolder != nil and File.exists?("#{controlfolder}/#{host}-controlmaster")
|
82
|
+
controlpath = "-o 'ControlPath=#{controlfolder}/#{host}-controlmaster'"
|
83
|
+
end
|
84
|
+
|
85
|
+
fullcmd = "#{ssh} #{controlpath} #{host} '#{cmd}'"
|
78
86
|
log "running #{fullcmd}"
|
79
87
|
return local fullcmd, {:prefix => host}
|
80
88
|
end
|
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cast-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.9
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Peter Bakkum
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2015-
|
11
|
+
date: 2015-10-24 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: mocha
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: autotest-standalone
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: peach
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: trollop
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
description: Execute remote commands via ssh on groups of machines
|
@@ -101,42 +90,41 @@ extra_rdoc_files:
|
|
101
90
|
- LICENSE.md
|
102
91
|
- README.md
|
103
92
|
files:
|
93
|
+
- ".rspec"
|
94
|
+
- ".travis.yml"
|
95
|
+
- Gemfile
|
104
96
|
- LICENSE.md
|
105
97
|
- README.md
|
98
|
+
- bin/cast
|
106
99
|
- cast.gemspec
|
107
|
-
- Gemfile
|
108
|
-
- .rspec
|
109
|
-
- .travis.yml
|
110
100
|
- lib/cast.rb
|
111
|
-
- bin/cast
|
112
101
|
- spec/lib/cast_spec.rb
|
113
102
|
- spec/spec_helper.rb
|
114
103
|
- spec/test.yml
|
115
104
|
homepage: http://github.com/bakks/cast
|
116
105
|
licenses:
|
117
106
|
- MIT
|
107
|
+
metadata: {}
|
118
108
|
post_install_message:
|
119
109
|
rdoc_options:
|
120
|
-
- --charset=UTF-8
|
110
|
+
- "--charset=UTF-8"
|
121
111
|
require_paths:
|
122
112
|
- lib
|
123
113
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
114
|
requirements:
|
126
|
-
- -
|
115
|
+
- - ">="
|
127
116
|
- !ruby/object:Gem::Version
|
128
117
|
version: '0'
|
129
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
119
|
requirements:
|
132
|
-
- -
|
120
|
+
- - ">="
|
133
121
|
- !ruby/object:Gem::Version
|
134
122
|
version: 1.3.6
|
135
123
|
requirements: []
|
136
124
|
rubyforge_project:
|
137
|
-
rubygems_version:
|
125
|
+
rubygems_version: 2.2.2
|
138
126
|
signing_key:
|
139
|
-
specification_version:
|
127
|
+
specification_version: 4
|
140
128
|
summary: Execute remote commands via ssh on groups of machines
|
141
129
|
test_files:
|
142
130
|
- spec/lib/cast_spec.rb
|