ssh-forever 0.2.1 → 0.2.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/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.2.2 2009-09-27
2
+
3
+ === New Features
4
+ * Ability to specify an identity file other than id_rsa.pub (Matt Johnson)_
5
+
1
6
  == 0.2.1 2009-09-03
2
7
 
3
8
  === New Features
data/README.markdown CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  Simple command to give you password-less SSH login on remote servers:
4
4
 
5
- ssh-forever username@yourserver.com [-p port]
6
-
5
+ ssh-forever username@yourserver.com [-p port] [-i identity_file]
6
+
7
7
  ## Installation
8
8
 
9
9
  gem sources --add http://gemcutter.org
@@ -15,21 +15,21 @@ Simple command to give you password-less SSH login on remote servers:
15
15
  You do not appear to have a public key. I expected to find one at /Users/matt/.ssh/id_rsa.pub
16
16
  Would you like me to generate one? [Y/n]y
17
17
  Copying your public key to the remote server. Prepare to enter your password for the last time.
18
- mattwynne@mattwynne.net's password:
18
+ mattwynne@mattwynne.net's password:
19
19
  Success. From now on you can just use plain old 'ssh'. Logging you in...
20
20
  Linux broncos 2.6.29-xeon-aufs2.29-ipv6-qos-grsec #1 SMP Thu Jul 9 16:42:58 PDT 2009 x86_64
21
- _
21
+ _
22
22
  | |__ _ _ ___ _ _ __ ___ ___
23
23
  | '_ \ '_/ _ \ ' \/ _/ _ (_-<
24
24
  |_.__/_| \___/_||_\__\___/__/
25
-
25
+
26
26
  Welcome to broncos.dreamhost.com
27
27
 
28
28
  Any malicious and/or unauthorized activity is strictly forbidden.
29
29
  All activity may be logged by DreamHost Web Hosting.
30
30
 
31
31
  Last login: Sat Aug 15 17:24:17 2009
32
- [broncos]$
32
+ [broncos]$
33
33
 
34
34
  ## Why
35
35
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/bin/ssh-forever CHANGED
@@ -4,22 +4,26 @@ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
4
  require 'ssh-forever'
5
5
  require 'optparse'
6
6
 
7
- help = 'Usage: ssh-forever username@yourserver.com [-p port]'
7
+ help = 'Usage: ssh-forever username@yourserver.com [-p port] [-i identity_file]'
8
8
 
9
9
  options = {}
10
10
  OptionParser.new do |opts|
11
11
  opts.banner = help
12
-
12
+
13
13
  opts.on('-p', '--port [PORT]', 'port') do |port|
14
14
  options[:port] = port
15
15
  end
16
+
17
+ opts.on('-i', '--identity_file [IDENTITY_FILE]', 'identity_file') do |identity_file|
18
+ options[:identity_file] = identity_file
19
+ end
16
20
  end.parse!
17
21
 
18
22
  login = ARGV[0]
19
23
 
20
24
  if login.nil?
21
- puts help
25
+ puts help
22
26
  exit 1
23
27
  end
24
28
 
25
- SecureShellForever.run(login, options)
29
+ SshForever::SecureShellForever.new(login, options).run
data/lib/ssh-forever.rb CHANGED
@@ -1,6 +1,13 @@
1
- module SecureShellForever
2
- class << self
3
- def run(login, options = {})
1
+ module SshForever
2
+ VERSION = '0.2.1'
3
+
4
+ class SecureShellForever
5
+ def initialize(login, options = {})
6
+ @login = login
7
+ @options = options
8
+ end
9
+
10
+ def run
4
11
  unless File.exists?(public_key_path)
5
12
  STDERR.puts "You do not appear to have a public key. I expected to find one at #{public_key_path}\n"
6
13
  STDERR.print "Would you like me to generate one? [Y/n]"
@@ -10,20 +17,22 @@ module SecureShellForever
10
17
  end
11
18
  generate_public_key
12
19
  end
13
-
20
+
14
21
  args = [
15
22
  ' ',
16
- ("-p #{options[:port]}" if options[:port] =~ /^\d+$/)
23
+ ("-p #{@options[:port]}" if @options[:port] =~ /^\d+$/)
17
24
  ].compact.join(' ')
18
-
25
+
19
26
  puts "Copying your public key to the remote server. Prepare to enter your password for the last time."
20
- `ssh #{login}#{args} "#{remote_command}"`
27
+ `ssh #{@login}#{args} "#{remote_command}"`
21
28
  exit 1 unless $?.exitstatus == 0
22
-
29
+
23
30
  puts "Success. From now on you can just use plain old 'ssh'. Logging you in..."
24
- exec "ssh #{login}#{args}"
31
+ exec "ssh #{@login}#{args}"
25
32
  end
26
33
 
34
+ private
35
+
27
36
  def remote_command
28
37
  commands = []
29
38
  commands << 'mkdir -p ~/.ssh'
@@ -37,7 +46,7 @@ module SecureShellForever
37
46
  def key
38
47
  `cat #{public_key_path}`.strip
39
48
  end
40
-
49
+
41
50
  def generate_public_key
42
51
  silence_stream(STDOUT) do
43
52
  silence_stream(STDERR) do
@@ -50,16 +59,16 @@ module SecureShellForever
50
59
  Process.wait
51
60
  flunk("Oh dear. I was unable to generate your public key. Run the command 'ssh-keygen -t rsa' manually to find out why.") unless $? == 0
52
61
  end
53
-
62
+
54
63
  def flunk(message)
55
64
  STDERR.puts message
56
65
  exit 1
57
66
  end
58
-
67
+
59
68
  def public_key_path
60
- File.expand_path('~/.ssh/id_rsa.pub')
69
+ File.expand_path(@options[:identity_file] || '~/.ssh/id_rsa.pub')
61
70
  end
62
-
71
+
63
72
  def silence_stream(stream)
64
73
  old_stream = stream.dup
65
74
  stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
@@ -69,4 +78,4 @@ module SecureShellForever
69
78
  stream.reopen(old_stream)
70
79
  end
71
80
  end
72
- end
81
+ end
data/ssh-forever.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ssh-forever}
8
- s.version = "0.2.1"
8
+ s.version = "0.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matt Wynne"]
12
- s.date = %q{2009-09-03}
12
+ s.date = %q{2009-09-27}
13
13
  s.default_executable = %q{ssh-forever}
14
14
  s.description = %q{Provides a replacement for the SSH command which automatically copies your public key while logging in}
15
15
  s.email = %q{matt@mattwynne.net}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ssh-forever
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wynne
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-03 00:00:00 +01:00
12
+ date: 2009-09-27 00:00:00 +01:00
13
13
  default_executable: ssh-forever
14
14
  dependencies: []
15
15