rye 0.6.2 → 0.6.3
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 +8 -0
- data/bin/rye +5 -2
- data/bin/try +1 -1
- data/lib/rye/box.rb +27 -4
- data/lib/rye/cmd.rb +17 -1
- data/lib/sys.rb +5 -0
- data/rye.gemspec +1 -1
- metadata +2 -2
data/CHANGES.txt
CHANGED
@@ -2,9 +2,17 @@ RYE, CHANGES
|
|
2
2
|
|
3
3
|
TODO
|
4
4
|
|
5
|
+
* Re-implement Rye::Rap as an Observable StringIO object for dynamic printing of output.
|
5
6
|
* Fingerprints: ssh-keygen -l -f id_rsa_repos.pub
|
6
7
|
|
7
8
|
|
9
|
+
#### 0.6.3 (2009-05-02) #############################
|
10
|
+
|
11
|
+
* FIXED: Rye::Box.guess_user_home wasn't handling the username arg (only using default name)
|
12
|
+
* ADDED: Rye::Cmd.can?
|
13
|
+
* ADDED: Rye::Cmd.ostype
|
14
|
+
|
15
|
+
|
8
16
|
#### 0.6.2 (2009-04-29) #############################
|
9
17
|
|
10
18
|
* FIXED: I forgot to add highline to the gemspec file manifest. Cripes!
|
data/bin/rye
CHANGED
@@ -41,16 +41,18 @@ option :u, :user, String, "Username"
|
|
41
41
|
argv :hostname
|
42
42
|
command :authorize do |obj|
|
43
43
|
raise "You must specify a host" unless obj.argv.hostname
|
44
|
+
user = Rye.sysinfo.user
|
44
45
|
|
45
46
|
opts = { :debug => nil, :auth_methods => %w(publickey hostbased) }
|
46
47
|
opts[:user] = obj.option.user if obj.option.user
|
48
|
+
opts[:user] ||= user
|
47
49
|
|
48
50
|
obj.argv.each do |hostname|
|
49
51
|
|
50
|
-
puts "Authorizing #{
|
52
|
+
puts "Authorizing #{opts[:user]}@#{hostname}"
|
51
53
|
rbox = Rye::Box.new(hostname, opts)
|
52
54
|
puts "Added public keys for: ", rbox.authorize_keys_remote
|
53
|
-
puts "Now try: " << "ssh #{
|
55
|
+
puts "Now try: " << "ssh #{opts[:user]}@#{hostname}"
|
54
56
|
|
55
57
|
end
|
56
58
|
|
@@ -60,6 +62,7 @@ command_alias :authorize, :authorise
|
|
60
62
|
about "Add your public keys to your current account on this machine"
|
61
63
|
command :authorize_local do |obj|
|
62
64
|
user = Rye.sysinfo.user
|
65
|
+
|
63
66
|
puts "Authorizing #{user}@localhost"
|
64
67
|
rbox = Rye::Box.new('localhost')
|
65
68
|
puts "Added public keys for: ", rbox.authorize_keys_local
|
data/bin/try
CHANGED
data/lib/rye/box.rb
CHANGED
@@ -301,10 +301,17 @@ module Rye
|
|
301
301
|
Rye.remote_host_keys(@host)
|
302
302
|
end
|
303
303
|
|
304
|
+
|
304
305
|
# Uses the output of "useradd -D" to determine the default home
|
305
306
|
# directory. This returns a GUESS rather than the a user's real
|
306
307
|
# home directory. Currently used only by authorize_keys_remote.
|
307
308
|
def guess_user_home(other_user=nil)
|
309
|
+
this_user = other_user || opts[:user]
|
310
|
+
@guessed_homes ||= {}
|
311
|
+
|
312
|
+
# A simple cache.
|
313
|
+
return @guessed_homes[this_user] if @guessed_homes.has_key?(this_user)
|
314
|
+
|
308
315
|
# Some junk to determine where user home directories are by default.
|
309
316
|
# We're relying on the command "useradd -D" so this may not work on
|
310
317
|
# different Linuxen and definitely won't work on Windows.
|
@@ -314,10 +321,22 @@ module Rye
|
|
314
321
|
user_defaults = {}
|
315
322
|
raw = self.useradd(:D) rescue ["HOME=/home"]
|
316
323
|
raw.each do |nv|
|
317
|
-
|
318
|
-
|
324
|
+
|
325
|
+
if self.ostype == "sunos"
|
326
|
+
#nv.scan(/([\w_-]+?)=(.+?)\s/).each do |n, v|
|
327
|
+
# n = 'HOME' if n == 'basedir'
|
328
|
+
# user_defaults[n.upcase] = v.strip
|
329
|
+
#end
|
330
|
+
# In Solaris, useradd -D says the default home path is /home
|
331
|
+
# but that directory is not writable. See: http://bit.ly/IJDD0
|
332
|
+
user_defaults['HOME'] = '/export/home'
|
333
|
+
else
|
334
|
+
n, v = nv.scan(/\A([\w_-]+?)=(.+)\z/).flatten
|
335
|
+
user_defaults[n] = v
|
336
|
+
end
|
319
337
|
end
|
320
|
-
|
338
|
+
|
339
|
+
@guessed_homes[this_user] = "#{user_defaults['HOME']}/#{this_user}"
|
321
340
|
end
|
322
341
|
|
323
342
|
# Copy the local public keys (as specified by Rye.keys) to
|
@@ -402,7 +421,7 @@ module Rye
|
|
402
421
|
# A handler for undefined commands.
|
403
422
|
# Raises Rye::CommandNotFound exception.
|
404
423
|
def method_missing(meth, *args, &block)
|
405
|
-
raise Rye::CommandNotFound, "#{meth.to_s}
|
424
|
+
raise Rye::CommandNotFound, "#{meth.to_s}"
|
406
425
|
end
|
407
426
|
def preview_command(*args)
|
408
427
|
prep_args(*args).join(' ')
|
@@ -481,6 +500,10 @@ module Rye
|
|
481
500
|
rap.exit_signal = esignal
|
482
501
|
rap.cmd = cmd
|
483
502
|
|
503
|
+
# It seems a convention for various commands to return -1
|
504
|
+
# when something only mildly concerning happens. ls even
|
505
|
+
# returns -1 for apparently no reason sometimes. In any
|
506
|
+
# case, the real errors are the ones greater than zero
|
484
507
|
raise Rye::CommandError.new(rap) if ecode > 0
|
485
508
|
|
486
509
|
rap
|
data/lib/rye/cmd.rb
CHANGED
@@ -109,6 +109,17 @@ module Rye;
|
|
109
109
|
ret.stderr.empty?
|
110
110
|
end
|
111
111
|
|
112
|
+
# Return the value of uname in lowercase
|
113
|
+
# This is a temporary fix. We can use SysInfo for this, upload
|
114
|
+
# it, execute it directly, parse the output.
|
115
|
+
def ostype
|
116
|
+
return @ostype if @ostype # simple cache
|
117
|
+
os = self.uname.first rescue nil
|
118
|
+
os ||= 'unknown'
|
119
|
+
os &&= os.downcase
|
120
|
+
@ostype = os
|
121
|
+
end
|
122
|
+
|
112
123
|
# Returns the hash containing the parsed output of "env" on the
|
113
124
|
# remote machine. If the initialize option +:getenv+ was set to
|
114
125
|
# false, this will return an empty hash.
|
@@ -117,6 +128,9 @@ module Rye;
|
|
117
128
|
#
|
118
129
|
# puts rbox.getenv['HOME'] # => "/home/gloria" (remote)
|
119
130
|
#
|
131
|
+
# NOTE: This method should not raise an exception under normal
|
132
|
+
# circumstances.
|
133
|
+
#
|
120
134
|
def getenv
|
121
135
|
if @getenv && @getenv.empty? && self.can?(:env)
|
122
136
|
env = self.env rescue []
|
@@ -143,7 +157,9 @@ module Rye;
|
|
143
157
|
alias :command? :can?
|
144
158
|
alias :cmd? :can?
|
145
159
|
|
146
|
-
|
160
|
+
def Cmd.can?(meth)
|
161
|
+
instance_methods.member?(meth)
|
162
|
+
end
|
147
163
|
|
148
164
|
#--
|
149
165
|
# * Consider a lock-down mode using method_added
|
data/lib/sys.rb
CHANGED
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.6.
|
4
|
+
s.version = "0.6.3"
|
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.6.
|
4
|
+
version: 0.6.3
|
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: 2009-
|
12
|
+
date: 2009-05-02 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|