rye 0.8.18 → 0.8.19
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/CHANGES.txt +6 -0
- data/README.rdoc +0 -1
- data/lib/rye.rb +1 -1
- data/lib/rye/box.rb +36 -6
- data/lib/rye/cmd.rb +0 -1
- data/lib/rye/set.rb +1 -0
- data/rye.gemspec +1 -1
- metadata +2 -2
data/CHANGES.txt
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
RYE, CHANGES
|
|
2
2
|
|
|
3
|
+
#### 0.8.19 (2010-06-28) #############################
|
|
4
|
+
|
|
5
|
+
* ADDED: Rye::Box#root?
|
|
6
|
+
* ADDED: Better sudo handling.
|
|
7
|
+
|
|
8
|
+
|
|
3
9
|
#### 0.8.18 (2010-06-19) #############################
|
|
4
10
|
|
|
5
11
|
* FIXED: Authentication would never succeed if the first password attempt failed.
|
data/README.rdoc
CHANGED
data/lib/rye.rb
CHANGED
data/lib/rye/box.rb
CHANGED
|
@@ -33,6 +33,11 @@ module Rye
|
|
|
33
33
|
def opts; @rye_opts; end
|
|
34
34
|
def safe; @rye_safe; end
|
|
35
35
|
def user; @rye_user; end
|
|
36
|
+
def root?; user.to_s == "root" end
|
|
37
|
+
|
|
38
|
+
def enable_sudo; @rye_sudo = true; end
|
|
39
|
+
def disable_sudo; @rye_sudo = false; end
|
|
40
|
+
def sudo?; @rye_sudo == true end
|
|
36
41
|
|
|
37
42
|
# Returns the current value of the stash +@rye_stash+
|
|
38
43
|
def stash; @rye_stash; end
|
|
@@ -84,6 +89,7 @@ module Rye
|
|
|
84
89
|
# * :error => an IO object to print Rye::Box errors to. Default: STDERR
|
|
85
90
|
# * :getenv => pre-fetch +host+ environment variables? (default: true)
|
|
86
91
|
# * :password => the user's password (ignored if there's a valid private key)
|
|
92
|
+
# * :sudo => Run all commands via sudo (default: false)
|
|
87
93
|
#
|
|
88
94
|
# NOTE: +opts+ can also contain any parameter supported by
|
|
89
95
|
# Net::SSH.start that is not already mentioned above.
|
|
@@ -121,7 +127,7 @@ module Rye
|
|
|
121
127
|
@rye_info, @rye_error = @rye_opts.delete(:info), @rye_opts.delete(:error)
|
|
122
128
|
@rye_getenv = {} if @rye_opts.delete(:getenv) # Enable getenv with a hash
|
|
123
129
|
@rye_ostype, @rye_impltype = @rye_opts.delete(:ostype), @rye_opts.delete(:impltype)
|
|
124
|
-
@rye_quiet = @rye_opts.delete(:quiet)
|
|
130
|
+
@rye_quiet, @rye_sudo = @rye_opts.delete(:quiet), @rye_opts.delete(:sudo)
|
|
125
131
|
|
|
126
132
|
# Just in case someone sends a true value rather than IO object
|
|
127
133
|
@rye_debug = STDERR if @rye_debug == true
|
|
@@ -430,10 +436,16 @@ module Rye
|
|
|
430
436
|
# We need to rewind so that all of the StringIO object is uploaded
|
|
431
437
|
authorized_keys.rewind
|
|
432
438
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
439
|
+
full_path = "#{homedir}/#{akey_path}"
|
|
440
|
+
temp_path = "/tmp/rye-#{user}-#{File.basename(akey_path)}"
|
|
441
|
+
|
|
442
|
+
sudo do
|
|
443
|
+
mkdir :p, :m, '700', File.dirname(akey_path)
|
|
444
|
+
file_upload authorized_keys, temp_path
|
|
445
|
+
mv temp_path, full_path
|
|
446
|
+
chmod '0600', akey_path
|
|
447
|
+
chown :R, this_user.to_s, File.dirname(akey_path)
|
|
448
|
+
end
|
|
437
449
|
end
|
|
438
450
|
|
|
439
451
|
# And let's return to the directory we came from.
|
|
@@ -587,6 +599,24 @@ module Rye
|
|
|
587
599
|
ret
|
|
588
600
|
end
|
|
589
601
|
|
|
602
|
+
# Like batch, except it enables sudo mode before executing the block.
|
|
603
|
+
# If the user is already root, this has no effect. Otherwise all
|
|
604
|
+
# commands executed in the block will run via sudo.
|
|
605
|
+
#
|
|
606
|
+
# If no block is specified then sudo is called just like a regular
|
|
607
|
+
# command.
|
|
608
|
+
def sudo(*args, &block)
|
|
609
|
+
if block.nil?
|
|
610
|
+
__allow('sudo', args);
|
|
611
|
+
else
|
|
612
|
+
previous_state = @rye_sudo
|
|
613
|
+
enable_sudo
|
|
614
|
+
ret = self.instance_exec *args, &block
|
|
615
|
+
@rye_sudo = previous_state
|
|
616
|
+
ret
|
|
617
|
+
end
|
|
618
|
+
end
|
|
619
|
+
|
|
590
620
|
# instance_exec for Ruby 1.8 written by Mauricio Fernandez
|
|
591
621
|
# http://eigenclass.org/hiki/instance_exec
|
|
592
622
|
if RUBY_VERSION =~ /1.8/
|
|
@@ -816,7 +846,7 @@ module Rye
|
|
|
816
846
|
def prep_args(*args)
|
|
817
847
|
args = args.flatten.compact
|
|
818
848
|
args = args.first.to_s.split(/\s+/) if args.size == 1
|
|
819
|
-
cmd = args.shift
|
|
849
|
+
cmd = sudo? ? :sudo : args.shift
|
|
820
850
|
|
|
821
851
|
# Symbols to switches. :l -> -l, :help -> --help
|
|
822
852
|
args.collect! do |a|
|
data/lib/rye/cmd.rb
CHANGED
|
@@ -48,7 +48,6 @@ module Rye;
|
|
|
48
48
|
|
|
49
49
|
#def kill(*args); __allow('kill', args); end
|
|
50
50
|
def rake(*args); __allow('rake', args); end
|
|
51
|
-
def sudo(*args); __allow('sudo', args); end
|
|
52
51
|
def grep(*args); __allow('grep', args); end
|
|
53
52
|
def date(*args); __allow('date', args); end
|
|
54
53
|
def ruby(*args); __allow('ruby', args); end
|
data/lib/rye/set.rb
CHANGED
|
@@ -50,6 +50,7 @@ module Rye
|
|
|
50
50
|
|
|
51
51
|
def opts; @opts; end
|
|
52
52
|
def user; (@opts || {})[:user]; end
|
|
53
|
+
def root?; user.to_s == "root" end
|
|
53
54
|
|
|
54
55
|
# * +boxes+ one or more boxes. Rye::Box objects will be added directly
|
|
55
56
|
# to the set. Hostnames will be used to create new instances of Rye::Box
|
data/rye.gemspec
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
|
2
2
|
s.name = "rye"
|
|
3
3
|
s.rubyforge_project = "rye"
|
|
4
|
-
s.version = "0.8.
|
|
4
|
+
s.version = "0.8.19"
|
|
5
5
|
s.summary = "Rye: Safely run SSH commands on a bunch of machines at the same time (from Ruby)."
|
|
6
6
|
s.description = s.summary
|
|
7
7
|
s.author = "Delano Mandelbaum"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rye
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.19
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Delano Mandelbaum
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-06-
|
|
12
|
+
date: 2010-06-27 00:00:00 -04:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|