rye 0.3.2 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/rye/rap.rb CHANGED
@@ -20,6 +20,11 @@ module Rye;
20
20
 
21
21
  # An array containing any STDERR output
22
22
  attr_reader :stderr
23
+ attr_accessor :exit_code
24
+ attr_accessor :exit_signal
25
+
26
+ # The command that was executed.
27
+ attr_accessor :cmd
23
28
 
24
29
  # * +obj+ an instance of Rye::Box or Rye::Set
25
30
  # * +args+ anything that can sent to Array#new
@@ -68,6 +73,10 @@ module Rye;
68
73
  super
69
74
  end
70
75
 
76
+ def >>(*other)
77
+ p other
78
+ end
79
+
71
80
  #---
72
81
  # If Box's shell methods return Rap objects, then
73
82
  # we can do stuff like this
data/lib/rye/set.rb CHANGED
@@ -6,6 +6,7 @@ module Rye
6
6
  class Set
7
7
  attr_reader :name
8
8
  attr_reader :boxes
9
+ attr_reader :opts
9
10
 
10
11
  # * +name+ The name of the set of machines
11
12
  # * +opts+ a hash of optional arguments
@@ -76,6 +77,14 @@ module Rye
76
77
  Rye.keys
77
78
  end
78
79
 
80
+ def to_s
81
+ "%s: %s" % [self.name, ]
82
+ end
83
+
84
+ def inspect
85
+ %q{#<%s:%s boxes=%s opts=%s>} % [self.class.to_s, self.name, self.boxes.join(','), self.opts.inspect]
86
+ end
87
+
79
88
  # See Rye::Box.[]
80
89
  def [](key=nil)
81
90
  run_command(:cd, key)
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.3.2"
4
+ s.version = "0.4"
5
5
  s.summary = "Rye: Run system commands via SSH locally and remotely in a Ruby way."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
@@ -11,7 +11,9 @@
11
11
  # = DEPENDENCIES =
12
12
  # Add all gem dependencies
13
13
  s.add_dependency 'net-ssh'
14
+ s.add_dependency 'net-scp'
14
15
  s.add_dependency 'highline'
16
+ s.add_dependency 'drydock'
15
17
 
16
18
  # = MANIFEST =
17
19
  # The complete list of files to be included in the release. When GitHub packages your gem,
@@ -24,22 +26,31 @@
24
26
  LICENSE.txt
25
27
  README.rdoc
26
28
  Rakefile
29
+ bin/rye
27
30
  bin/try
28
31
  lib/esc.rb
29
32
  lib/rye.rb
30
33
  lib/rye/box.rb
31
34
  lib/rye/cmd.rb
35
+ lib/rye/key.rb
32
36
  lib/rye/rap.rb
33
37
  lib/rye/set.rb
34
38
  lib/sys.rb
35
39
  rye.gemspec
36
- test/10_rye_test.rb
40
+ try/copying.rb
41
+ try/keys.rb
42
+ tst/10-key1
43
+ tst/10-key1.pub
44
+ tst/10-key2
45
+ tst/10-key2.pub
46
+ tst/10_keys_test.rb
47
+ tst/50_rye_test.rb
37
48
  )
38
49
 
39
50
  # = EXECUTABLES =
40
51
  # The list of executables in your project (if any). Don't include the path,
41
52
  # just the base filename.
42
- #s.executables = %w[]
53
+ s.executables = %w[rye]
43
54
 
44
55
 
45
56
  s.extra_rdoc_files = %w[README.rdoc LICENSE.txt]
data/try/copying.rb ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # THIS IS A SCRAP FILE.
4
+
5
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
+
7
+ require 'rye'
8
+
9
+ boxA = Rye::Box.new('ryehost', :user => "root")
10
+ boxB = Rye::Box.new('127.0.0.1', :user => 'delano', :safe => false, :debug => STDOUT)
11
+ set = Rye::Set.new
12
+ set.add_boxes(boxA, boxB)
13
+
14
+ #p boxA['/tmp/ssh-test'].cat.stderr
15
+
16
+ #boxB['/tmp/ssh-test'].copy_to boxA['/tmp'], boxA['/tmp']
17
+
18
+
19
+ p boxA.ls(:a)
data/try/keys.rb ADDED
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # THIS IS A SCRAP FILE.
4
+
5
+ __END__
6
+ require 'openssl'
7
+ key = OpenSSL::PKey::RSA.generate(1024)
8
+ pub = key.public_key
9
+ ca = OpenSSL::X509::Name.parse("/C=US/ST=Florida/L=Miami/O=Waitingf/OU=Poopstat/CN=waitingf.org/emailAddress=bkerley@brycekerley.net")
10
+ cert = OpenSSL::X509::Certificate.new
11
+ cert.version = 2
12
+ cert.serial = 1
13
+ cert.subject = ca
14
+ cert.issuer = ca
15
+ cert.public_key = pub
16
+ cert.not_before = Time.now
17
+ cert.not_after = Time.now + 3600
18
+ File.open("private.pem", "w") { |f| f.write key.to_pem }
19
+ File.open("cert.pem", "w") { |f| f.write cert.to_pem }
20
+
21
+ require "openssl"
22
+
23
+
24
+ pkey = OpenSSL::PKey::RSA.new(512)
25
+ cert = OpenSSL::X509::Certificate.new
26
+ cert.version = 1
27
+ cert.subject = cert.issuer = OpenSSL::X509::Name.parse("/C=FOO")
28
+ cert.public_key = pkey.public_key
29
+ cert.not_before = Time.now
30
+ cert.not_after = Time.now+3600*24*365
31
+ cert.sign(pkey, OpenSSL::Digest::SHA1.new)
32
+ p12 = OpenSSL::PKCS12.create("passwd", "FriendlyName", pkey, cert)
33
+ #puts p12.to_der
34
+
35
+ __END__
36
+ # Tasks demonstrated:
37
+ # Creating a public-private key pair
38
+ # Saving individual keys to disk in PEM format
39
+ # Reading individual keys from disk
40
+ # Encyrpting with public key
41
+ # Decrypting with private key
42
+ # Checking whether a key has public | private key
43
+
44
+ require 'openssl'
45
+
46
+ # in a real rsa implementation, message would be the symmetric key
47
+ # used to encrypt the real message data
48
+ # which would be 'yourpass' in snippet http://www.bigbold.com/snippets/posts/show/576
49
+ message = "This is some cool text."
50
+ puts "\nOriginal Message: #{message}\n"
51
+
52
+ puts "Using ruby-openssl to generate the public and private keys\n"
53
+
54
+ # .generate creates an object containing both keys
55
+ new_key = OpenSSL::PKey::RSA.generate( 1024 )
56
+ puts "Does the generated key object have the public key? #{new_key.public?}\n"
57
+ puts "Does the generated key object have the private key? #{new_key.private?}\n\n"
58
+
59
+ # write the new keys as PEM's
60
+ new_public = new_key.public_key
61
+ puts "New public key pem:\n#{new_public}\n"
62
+ puts "The new public key in human readable form:\n"
63
+ puts new_public.to_text + "\n"
64
+
65
+ output_public = File.new("./new_public.pem", "w")
66
+ output_public.puts new_public
67
+ output_public.close
68
+
69
+ new_private = new_key.to_pem
70
+ puts "new private key pem:\n#{new_private}\n"
71
+
72
+ output_private = File.new("./new_private.pem", "w")
73
+ output_private.puts new_private
74
+ output_private.close
75
+
76
+ puts "\nEncrypt/decrypt using previously saved pem files on disk...\n"
77
+ # we encrypt with the public key
78
+ # note: of course the public key PEM contains only the public key
79
+ puts "Reading Public Key PEM...\n"
80
+ public_key = OpenSSL::PKey::RSA.new(File.read("./new_public.pem"))
81
+ puts "Does the public pem file have the public key? #{public_key.public?}\n"
82
+ puts "Does the public pem file have the private key? #{public_key.private?}\n"
83
+ puts "\nEncrypting with public key ...\n"
84
+ cipher_text = public_key.public_encrypt( message )
85
+ puts "cipher text:\n#{cipher_text}\n"
86
+
87
+ # get the private key from pem file and decrypt
88
+ # note the private key PEM contains both keys
89
+ puts "\nReading Private Key PEM...\n"
90
+ private_key = OpenSSL::PKey::RSA.new(File.read("./new_private.pem"))
91
+ puts "Does the private pem file have the public key? #{private_key.public?}\n"
92
+ puts "Does the private pem file have the private key? #{private_key.private?}\n"
93
+ puts "\nDecrypting with private key ...\n"
94
+ clear_text = private_key.private_decrypt( cipher_text )
95
+ puts "\ndecoded text:\n#{clear_text}\n\n"
96
+
97
+
98
+ __END__
99
+
100
+ # outputs: -rw-r--r--
101
+ def self.calc_mode pbit
102
+ # permission bit
103
+ mode = Array.new(10, '-')
104
+ mt = pbit & 0170000
105
+ # S_IFMT
106
+ case mt
107
+ # S_IFDIR
108
+ when 00040000
109
+ mode[0] = 'd'
110
+ # S_IFBLK
111
+ when 0060000
112
+ mode[0] = 'b'
113
+ # S_IFCHR
114
+ when 0020000
115
+ mode[0] = 'c'
116
+ # S_IFLNK
117
+ when 0120000
118
+ mode[0] = 'l'
119
+ # S_IFFIFO
120
+ when 0010000
121
+ mode[0] = 'p'
122
+ # S_IFSOCK
123
+ when 0140000
124
+ mode[0] = 's'
125
+ end
126
+ u = pbit & 00700
127
+ g = pbit & 00070
128
+ o = pbit & 00007
129
+ mode[1] = 'r' if u & 00400 != 0
130
+ mode[2] = 'w' if u & 00200 != 0
131
+ mode[3] = 'x' if u & 00100 != 0
132
+ mode[4] = 'r' if g & 00040 != 0
133
+ mode[5] = 'w' if g & 00020 != 0
134
+ mode[6] = 'x' if g & 00010 != 0
135
+ mode[7] = 'r' if o & 00004 != 0
136
+ mode[8] = 'w' if o & 00002 != 0
137
+ mode[9] = 'x' if o & 00001 != 0
138
+ mode.join('')
139
+ end
data/tst/10-key1 ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHons
3
+ sxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5
4
+ bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zX
5
+ OS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2C
6
+ EBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqv
7
+ L5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIwIBIwKCAQEAtaTLpeIcWetzyRkx
8
+ ErC5bBXANiTrDJ7W2X2aIC9+3DbEVZAayn72oE+S6VYBV0pOrR9T73LGb9PCzfQ/
9
+ VbSit1UKaM1OnXQ8BU3fEmikHElX47dglGHg0vFc0jYBUf5gQjXf/KyleJ8QqJE7
10
+ fPKp9HRgdJLEW0qWQhYDqiZsFp6cEjaLPz1URDV3NQhc2zMa1wvq22rVbhiGolev
11
+ J9Mpt/x0VEzTkMCQ+zRp5ca9wrbybN3V9MPS+rW8BUhhf2ZGNwvlV9MXJ2Y+IG8l
12
+ OTrVA8+0o500d/TVqhgj4dQNsJG8NYOel2q8kzMt2wmilnM5guuTQKV6vA5gBqNe
13
+ 4rfxuwKBgQDlUINrk4Y2R5X2BGjYRq+n8Ct7LPM5DHgWMCl11dtptncrMnES+DsQ
14
+ 06rs1kfd7tchpsoXkZw7xRAfdcqoPyQgH/pflI1beTNzzB2BSQYzsP8oCqn/qLw1
15
+ 8F+Uj7IoQ/AixWJOUcgvx+85Fwht/u6lTi+ak7caVlTk8LHS8SAJmQKBgQDk8ncx
16
+ h4rXjKRbW2U0iNJGUWdMP88fFKmnHhsHHm75bgIWg/YgoL8W2y/HhmgUHrskkkXc
17
+ BwpLa0g5YakgKt22c9HAAB+B4EXuBLWANKv3WLccJBgN9dpTLGsSMGbiQAHn6/fn
18
+ njrd+NDH8z8jAx1j4ITJzYiKfa6+DiP6HA/HGwKBgA0aiyq3+QpqfZkHkPZqcG//
19
+ GG1wSGmo8OtTNZG0cvAZDh+5vVGKhwhGnA2IlmR0DEsQ2FkeQ3EhNB8OC5SV5M6i
20
+ vdmTdcq2d/f9CQASzSeGdPr5S4rzsvvEl79Yqxg+ZX5UbAR5s6r1e2JZFmyve1nn
21
+ NeuTaYx59jj3z6WnYOqbAoGADRUrYep89l/O4KYjClD2EqWQ38khx0MCYVItbh7/
22
+ BvBX5AeKaEOzJeCjpQBduAHBjQ+sOHVuTXPYPcsQ+oYbTEEh7bbdOp8Z8FgKXxjz
23
+ 4j+Vb1KFCBytY9anCFqJiUV8c6cVevMZToM/IV5bYRYe78Ov0QRuM8yq5knzbWCw
24
+ cccCgYEAx681uFoi74fmii8cecItcxW1jPT+C9kmh1bpN6hgTeoWH9W0fi0we77D
25
+ 35I5hd7Qxh+6DhW75dWcWil6V3UqsBkpzlOx8+SdXJT7J5IDSNuCIRctct1prEqS
26
+ C6x5mIzPqKTY/Ebn12u68HMNecGVWQXNJrfYceQ9HyDKYC5OrRg=
27
+ -----END RSA PRIVATE KEY-----
data/tst/10-key1.pub ADDED
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIw== delano@vanya.local
data/tst/10-key2 ADDED
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: DES-EDE3-CBC,A2D419194B51170A
4
+
5
+ 5GWquKZfufjYD/dcjU7aZ8LauEQzJSF+o9pz8X1eeuqcJ8bc68tm7LtJP1kiPQcD
6
+ vPsXCWYx3eXPSGBkYUqP0Ta6EqHRpoBnOSHKCurMMAYxrfWxECp7A6rkVALpFXR4
7
+ UQcts+lAssdg15GqQnDJxDg2zQc5kiWb10NVu01kuuevLj+nqr/PC/os/vuFfPqG
8
+ C+guJzmhaILqGSKNWkIuBS8lojjKHrJxyBcrLF0/yfTVPsA6TAQNRz9cDuzfnLvy
9
+ HAcHKW/OgdJkoQ/D0sxEHRQLm/yqoyuxUs0vb0iQja4P1/qsjGJr6QYk2gUJETun
10
+ hyvHtpUc+F059is2ezrl9RNkz1pbINp2Wz7QYVJy9NpYkI6ZieWANR4ZdrQcp0uQ
11
+ lV7jS2w0UZelXe4jLFoM9sG4g28OMNZyFk+i49J74F5E8SBnYeupNoTb6Ujs7cMZ
12
+ lVc47aTaT+2a/5TY043GSmo/vp18dN3Fp9u5QuO1mtw/VbmmyK8CO0OFflEgnG3a
13
+ Ke09tJ9+R11eDU+mG0cNl/OUcqsKTIjQEfeHCKszzbfyLXDMQOIgUhirv8kMR8/0
14
+ i8tCk/uEKZ1rYpsoocdBqXMqOV1/QySQ4CifeuDXx2uVTHBZrKh5Ips69QAkof1v
15
+ Aholk9V1jdl/sXWCII73Z7OoATng6gSfjmSHDGrDmoBeTpYkdgXTL4ndENIyHt3e
16
+ InRvfiN/Jk/5nqOpDJs6AV95phAADAaNclR6o/gnKZntlBpWjn3N9hdXAGumty2V
17
+ 7XZjmQtj3sYD1XvI0fKD4t2eKvbJANxHAkiyYVsD4DbjmdIW5mw6RtYrchBDKIBA
18
+ fZIeSAt9Hqsy6h0IzFxC1kxMa1GxdKXepYjbDjqRDFhw0zRyBHDMQTDDFuX/QjsU
19
+ ZVCG8djcvY4hjAB+D+/lmgGRKXyB+VbqMpDhpvZAhyarbXzeKv52v/Ae2H3MfHwF
20
+ KfHrn9jBPIT8AqsMsfxMXNFj/l6a+vZfhcYgo3I12lHA2AOA4AdSbI3YDO40o6Bi
21
+ tfXohXsouaPHNT2zksoUDeam6F7qzewZ6+P9+jXsPm0tzZzVsv7cKqs45bTIi8ii
22
+ Rjr+b4vKUhdzbV7TvrwBzg6VNjD/sHoC6j7ViMRyrqwuOBXT4fMC3F3lEcRLRM8G
23
+ 37wrF96RCrJCPP2UjN2jNk/601QIQ8mID2N//GUXZiQd4eWhTg3R8fK5aiSOA8xs
24
+ 32jzmHksfENoeZHtcrdSRUaas1xsn3mU+KnWSOnRl70zL+TR/CtN1cZPrmCD+x5E
25
+ N+aWvEDz+kB6dzfqGOi4c/I6GoLmK0dPQj6/7QzlRsDhgBsW+Kzc/tHm7jf+q4bG
26
+ zKyqZ4deqP8/bfte2fE4nMukyMHIDxijEr7OMcJr7VY0eICQoeMgQGW/oXsUe1eO
27
+ p7QYAkNZwvV9QU1BKOjzGOfFz6kt+zLrOZYem0tWVfV+mf5KogRYhoQaf4jO7bAL
28
+ P2AmjMulYk/crR2OqhfszpZ9nNXovw9OqqTjJ1AEf75fmfSnr4UmmUxVKHkmKTHI
29
+ 3uQFtBl2ZDVctOS3vMAOQS8AlKL+u2RIt/d0LiX2jv8h4j1wg+i7Wg==
30
+ -----END RSA PRIVATE KEY-----
data/tst/10-key2.pub ADDED
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyWv+kF4ZZ5DzQNdXdkdoEdjeFfiQ59HxbD1WZVn6WQGAgydGR13A9X+g5eC7rNM/EAFdRaaUfgzGPh8O5ZwpuYEYfcYzDnjLlVXK0cXsGq/OUufUPcB2WaAzW8IjLFak51c92oHKrp3BPZPfFq3hTjUAgV9m8hFGTRustvkh1G+gXnuXTz/Bn9KS7kJMV6iWz5k6b4MzXaKO9S/CZxIw+VWt0F7MdIGiNfpvmPcXaAPpRiyDLpzXwrkU7eUphpK50iPSR2d1tIKtD/Jtr8PhAafzpZd6fXBK/L8/yufSFehSflMIg4BOdjk6xlC5ls9MLjbz+zZz9ZzXQg0xJ/JR6Q== delano@vanya.local
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/ruby
2
+
3
+ TEST_HOME = File.dirname(__FILE__)
4
+ $:.unshift File.join(TEST_HOME, '..', 'lib')
5
+
6
+ require 'rye'
7
+
8
+ private_key_path = File.join(TEST_HOME, '10-key1')
9
+ rpk = Rye::Key.from_file(private_key_path)
10
+
11
+
12
+
13
+ puts "RYE::KEY PUBLIC KEY GOOD TIMES: #{private_key_path}", $/
14
+ puts "1-2 should be the same. I don't understand why they are not."
15
+ puts "3-6 should have identical key content (ignoring spaces and 'ssh-rsa')"
16
+
17
+ # PKCS#1 RSAPublicKey* (PEM header: BEGIN RSA PUBLIC KEY)
18
+ puts "[1] PEM encoded public key (via Rye::Key#public_key)"
19
+ puts rpk.public_key.to_pem
20
+ # -----BEGIN RSA PUBLIC KEY-----
21
+ # MIIBCAKCAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHonssxN5
22
+ # i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5bbjU
23
+ # ixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0B
24
+ # nRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2CEBhD
25
+ # 18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yY
26
+ # Vm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIwIBIw==
27
+ # -----END RSA PUBLIC KEY-----
28
+
29
+ # X.509 SubjectPublicKeyInfo** (PEM header: BEGIN PUBLIC KEY)
30
+ puts $/, "[2] PEM encoded public key (via openssl rsa -in #{private_key_path} -pubout)"
31
+ puts Rye.shell('openssl', "rsa -in #{private_key_path} -pubout")
32
+ # -----BEGIN PUBLIC KEY-----
33
+ # MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAzRTl7NX++irdkHdH68/J
34
+ # Fu9EXimuih6wgfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8K
35
+ # StvidlMnNeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkz
36
+ # f1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk
37
+ # 0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9u
38
+ # Hof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3y
39
+ # IwIBIw==
40
+ # -----END PUBLIC KEY-----
41
+
42
+
43
+ puts $/, "[3] Base64 encoded"
44
+ puts Base64.encode64(rpk.public_key.to_blob)
45
+ # AAAAB3NzaC1yc2EAAAABIwAAAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6w
46
+ # gfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMn
47
+ # NeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oa
48
+ # UhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk
49
+ # 0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MS
50
+ # vk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02s
51
+ # UKcGoc3yIw==
52
+
53
+ puts $/, "[4] Base64 encoded, SSH2 format (manual)"
54
+ puts Base64.encode64(rpk.public_key.to_blob).strip.gsub(/[\r\n]/, '')
55
+ # AAAAB3NzaC1yc2EAAAABIwAAAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIw==
56
+
57
+ puts $/, "[5] Base64 encoded, SSH2 format (via Rye::Key.public_key.to_ssh2)"
58
+ puts rpk.public_key.to_ssh2
59
+ # ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIw==
60
+
61
+ puts $/, "[6] Base64 encoded, SSH2 format (via ssh-keygen -y -f #{private_key_path})"
62
+ puts Rye.shell('ssh-keygen', "-y -f #{private_key_path}")
63
+ # ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzRTl7NX++irdkHdH68/JFu9EXimuih6wgfDn0cIC15isHonssxN5i7SuIDfP9zLc9QJWgfUyn0nsdOp5Di8KStvidlMnNeZUSA2YwjQUH++1z4z5bbjUixCBkn8Jv6uV+CxPeB3DFJKOrc1DKfkzf1oaUhEPPcfS78ZGM7fEW5wXX8zXOS0BnRvX9oTpQtypdm6vjcdZnW76eSudjJvk0yruV6UquEcud+RVNtJlM7uqgm2CEBhD18qxQINwTG0NFALYMaNzXKrAu6MSvk9uHof/nSk4V5IwBh+2fQAyvukpgmqvL5yYVm1mXGs4DwG9ukJ+PuGzh02sUKcGoc3yIw==
64
+
65
+
66
+
67
+
68
+ __END__
69
+
70
+ * http://cryptosys.net/pki/rsakeyformats.html
71
+
72
+ Public key formats supported
73
+
74
+ * PKCS#1 RSAPublicKey* (PEM header: BEGIN RSA PUBLIC KEY)
75
+ * X.509 SubjectPublicKeyInfo** (PEM header: BEGIN PUBLIC KEY)
76
+ * XML <RSAKeyValue>
77
+
78
+ Encrypted private key format supported
79
+
80
+ * PKCS#8 EncryptedPrivateKeyInfo** (PEM header: BEGIN ENCRYPTED PRIVATE KEY)
81
+
82
+ Private key formats supported (unencrypted)
83
+
84
+ * PKCS#1 RSAPrivateKey** (PEM header: BEGIN RSA PRIVATE KEY)
85
+ * PKCS#8 PrivateKeyInfo* (PEM header: BEGIN PRIVATE KEY)
86
+ * XML <RSAKeyPair> and <RSAKeyValue>
87
+
88
+
@@ -14,15 +14,15 @@ require 'rye'
14
14
 
15
15
 
16
16
  machine_key = {
17
- :host => 'ryehost',
18
- :user => "root",
17
+ :host => 'localhost',
18
+ :user => "delano",
19
19
  :key => '/proj/git/rudy/.rudy/key-test-app.private'
20
20
  }
21
21
 
22
22
  machine_pass = {
23
- :host => 'ryehost',
24
- :user => 'pablo',
25
- :pass => 'pablo9001'
23
+ :host => 'localhost',
24
+ :user => 'delano',
25
+ # :pass => 'pablo9001'
26
26
  }
27
27
 
28
28
  machine_local = {
@@ -46,18 +46,9 @@ Benchmark.bmbm do |x|
46
46
  x.report('rset-P:') { puts "%10s:%s:%s" % rset_parallel.uname }
47
47
  end
48
48
 
49
- __END__
50
-
51
- #p rset.sleep(1)
52
-
53
- p rbox_remote.echo('$HOME')
54
-
55
- local_files = rbox_local['/tmp/ssh-test'].ls
56
- remote_files = rbox_remote['/etc/ssh'].ls
57
- diff = remote_files - local_files
58
-
59
- puts "ETC DIFF:"
60
- puts diff
61
-
62
- rbox_remote = Rye::Box.new('ec2-75-101-255-188.compute-1.amazonaws.com', :user => 'root', :debug => STDOUT, :safe => false, :keys => '/proj/git/rudy/.rudy/key-test-app.private')
63
-
49
+ # Parallel should obviously be faster here
50
+ Benchmark.bmbm do |x|
51
+ x.report('rbox: ') { puts "%10s:%s:%s" % [rbox_key.sleep(2), rbox_local.sleep(2), rbox_pass.sleep(2)] }
52
+ x.report('rset-S:') { puts "%10s:%s:%s" % rset_serial.sleep(2) }
53
+ x.report('rset-P:') { puts "%10s:%s:%s" % rset_parallel.sleep(2) }
54
+ end