octosh 0.0.1 → 0.0.2
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 +2 -0
- data/lib/octosh/cli.rb +47 -3
- data/lib/octosh/helper.rb +12 -0
- data/lib/octosh/version.rb +1 -1
- data/lib/octosh/worker/worker.rb +2 -0
- data/lib/octosh.rb +2 -0
- metadata +2 -1
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,6 +2,7 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
diff-lcs (1.1.3)
|
5
|
+
highline (1.6.15)
|
5
6
|
net-ssh (2.6.1)
|
6
7
|
rake (0.9.2.2)
|
7
8
|
rspec (2.12.0)
|
@@ -17,6 +18,7 @@ PLATFORMS
|
|
17
18
|
ruby
|
18
19
|
|
19
20
|
DEPENDENCIES
|
21
|
+
highline (= 1.6.15)
|
20
22
|
net-ssh (= 2.6.1)
|
21
23
|
rake (= 0.9.2.2)
|
22
24
|
rspec (= 2.12.0)
|
data/lib/octosh/cli.rb
CHANGED
@@ -38,14 +38,22 @@ module Octosh
|
|
38
38
|
options.default_user = user
|
39
39
|
end
|
40
40
|
|
41
|
+
options.password_prompt = false
|
42
|
+
opts.on('-p', '--password', 'Prompt for password') do
|
43
|
+
options.password_prompt = true
|
44
|
+
end
|
45
|
+
|
46
|
+
options.uniform_password = false
|
47
|
+
opts.on('-a', '--uniform-password', 'Use the same password for all hosts') do
|
48
|
+
options.uniform_password = true
|
49
|
+
end
|
50
|
+
|
41
51
|
opts.on_tail('-h', '--help', 'Display this screen' ) do
|
42
52
|
puts opts
|
43
53
|
exit
|
44
54
|
end
|
45
55
|
end.parse!
|
46
56
|
|
47
|
-
puts options.config
|
48
|
-
|
49
57
|
if not ARGV.empty? and not options.config
|
50
58
|
options.config = ARGV[0]
|
51
59
|
options.mode = Octosh::CLI::MODE::CONFIG
|
@@ -57,12 +65,48 @@ module Octosh
|
|
57
65
|
elsif (options.bash or options.script) and options.hosts
|
58
66
|
puts "Using inline execution"
|
59
67
|
options.mode = Octosh::CLI::MODE::INLINE
|
68
|
+
|
69
|
+
if options.bash and options.script
|
70
|
+
"Error -- Cannot specify both an inline command to run (-b) and a script file (-s)"
|
71
|
+
exit
|
72
|
+
elsif options.bash
|
73
|
+
self.inline_bash(options.hosts, options.bash, options.password_prompt, options.uniform_password)
|
74
|
+
elsif options.script
|
75
|
+
pass
|
76
|
+
else
|
77
|
+
"Error -- Something broke"
|
78
|
+
exit
|
79
|
+
end
|
80
|
+
|
60
81
|
else
|
61
82
|
puts "Error -- Must either provide an Octo config file or arguments for inline execution (--hosts along with -b or -s)"
|
62
83
|
exit
|
63
84
|
end
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.inline_bash(hosts, bash, password_prompt=true, uniform_password=false)
|
64
89
|
|
65
|
-
|
90
|
+
password = nil
|
91
|
+
|
92
|
+
hosts.each do |host|
|
93
|
+
if password_prompt
|
94
|
+
# Password authentication
|
95
|
+
if uniform_password and password.nil?
|
96
|
+
# One password for all hosts
|
97
|
+
password = Octosh::Helper.password_prompt("Password: ")
|
98
|
+
elsif not uniform_password
|
99
|
+
# One password for each host
|
100
|
+
password = Octosh::Helper.password_prompt("Password for #{host}: ")
|
101
|
+
end
|
102
|
+
user,hostname = host.split("@")
|
103
|
+
worker = Octosh::Worker.new(hostname, user, password)
|
104
|
+
puts worker.exec(bash)
|
105
|
+
else
|
106
|
+
# Identify file authentication
|
107
|
+
end
|
108
|
+
end
|
66
109
|
end
|
110
|
+
|
67
111
|
end
|
68
112
|
end
|
data/lib/octosh/version.rb
CHANGED
data/lib/octosh/worker/worker.rb
CHANGED
data/lib/octosh.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octosh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -28,6 +28,7 @@ files:
|
|
28
28
|
- bin/octoch
|
29
29
|
- lib/octosh.rb
|
30
30
|
- lib/octosh/cli.rb
|
31
|
+
- lib/octosh/helper.rb
|
31
32
|
- lib/octosh/version.rb
|
32
33
|
- lib/octosh/worker.rb
|
33
34
|
- lib/octosh/worker/worker.rb
|