class Object

Constants

HOME_PATH
SSH_PATH
SWITCH_FILE

Public Instance Methods

backup(name) click to toggle source
# File bin/sshwitch, line 61
def backup(name)
  if File.directory? SSH_PATH+name
    puts "#{SSH_PATH+name} already exists, skipping"
  else
   puts "Copying current key pair in #{SSH_PATH} to #{SSH_PATH+name}"
   begin
     mkdir SSH_PATH+name
     cp(SSH_PATH+"/id_rsa", SSH_PATH+name+"id_rsa", :verbose => true)
     cp(SSH_PATH+"/id_rsa.pub", SSH_PATH+name+"id_rsa.pub", :verbose => true)
    rescue => e
      puts "Could not backup key pair, check if you have permission to write on #{SSH_PATH+name}"
      puts e.message
   end
  end
end
delete(name) click to toggle source
# File bin/sshwitch, line 94
def delete(name)
  begin
    Dir.glob(File.join(SSH_PATH+name, "*")).each {|file| rm file, :verbose => true}
    rmdir SSH_PATH+name, :verbose => true
  rescue => e
    puts e.message
  end
end
get_current() click to toggle source
# File bin/sshwitch, line 11
def get_current
  begin
    File.open(SWITCH_FILE).first
  rescue
    File.new(SWITCH_FILE, 'w')
    nil
  end
end
list() click to toggle source
# File bin/sshwitch, line 20
def list
  begin
    Dir[SSH_PATH+'*/'].map { |a| File.basename(a) }
  end
end
new(name) click to toggle source
# File bin/sshwitch, line 45
def new(name)
  if File.directory? SSH_PATH+name
    puts "#{SSH_PATH+name} already exists, skipping"
  else
    puts "Creating key pair in #{SSH_PATH+name}"
    begin
      mkdir SSH_PATH+name
      `ssh-keygen -t rsa -f #{SSH_PATH+name}/id_rsa`
      rmdir SSH_PATH+name
    rescue => e
      puts "Could not create key pair, check if you have permission to write on #{SSH_PATH+name}"
      puts e.message
    end
  end
end
rename(oldname, newname) click to toggle source
# File bin/sshwitch, line 77
def rename(oldname, newname)
  if File.directory? SSH_PATH+newname
    puts "#{SSH_PATH+newname} already exists, cannot rename"
  else
    begin
      mv SSH_PATH+oldname, SSH_PATH+newname, :verbose => true
      if get_current == oldname
        File.open(SWITCH_FILE, 'w') {|f| f.write(newname) }
        puts "Renamed the current key"
      end
    rescue => e
      puts e.message
      puts "Could not rename"
    end
  end
end
switch(name) click to toggle source
# File bin/sshwitch, line 26
def switch(name)
  if File.readable?(SSH_PATH+name+"/id_rsa") && File.readable?(SSH_PATH+name+"/id_rsa.pub")
    begin
      cp(SSH_PATH+name+"/id_rsa", SSH_PATH+"id_rsa", :verbose => true)
      cp(SSH_PATH+name+"/id_rsa.pub", SSH_PATH+"id_rsa.pub", :verbose => true)
      File.open(SWITCH_FILE, 'w') {|f| f.write(name) }
      puts "Changed key pair to: " + name
    rescue => e
      puts "Could not copy, check if you have permission to write on #{SSH_PATH}"
      puts e.message
    end
  else
    puts "Could not read key pair in #{SSH_PATH+name}"
    puts "Check if key pair exists in #{SSH_PATH+name}\n\n"
    puts "If not you can create a new one with: \"sshwitch -n #{name}\""
    puts "Or backup the current key pair in #{SSH_PATH} with: \"sshwitch -b #{name}\""
  end
end