diff --git a/CliSSH.rb b/CliSSH.rb index 7c9b6bf..abed7d7 100644 --- a/CliSSH.rb +++ b/CliSSH.rb @@ -3,27 +3,30 @@ # mail: nishiki@yaegashi.fr # info: a simple script who manage your passwords -require 'net/ssh' require "#{APP_ROOT}/Cli.rb" class CliSSH < Cli + attr_accessor :server, :port, :login + def ssh(search) result = @m.search(search, 'ssh') if result.length > 0 result.each do |r| - server = r[MPW::SERVER] - login = r[MPW::LOGIN] - port = r[MPW::PORT] + @server.nil? ? (server = r[MPW::SERVER]) : (server = @server) + @port.nil? ? (port = r[MPW::PORT]) : (port = @port) + @login.nil? ? (login = r[MPW::LOGIN]) : (login = @login) + passwd = r[MPW::PASSWORD] if port.empty? port = 22 end + puts "ssh #{login}@#{server} -p #{port}" if passwd.empty? - system("#{passwd} ssh #{login}@#{server} -p #{port}") + system("ssh #{login}@#{server} -p #{port}") else system("sshpass -p #{passwd} ssh #{login}@#{server} -p #{port}") end diff --git a/mpw-ssh b/mpw-ssh index b6fae50..5366521 100755 --- a/mpw-ssh +++ b/mpw-ssh @@ -4,19 +4,42 @@ # info: a simple script who manage your passwords require 'rubygems' +require 'optparse' require 'pathname' APP_ROOT = File.dirname(Pathname.new(__FILE__).realpath) require "#{APP_ROOT}/CliSSH.rb" -if ARGV.length != 1 - puts "Usage: mpw-ssh search" +cli = CliSSH.new() +search = ARGV[0] + +options = {} +OptionParser.new do |opts| + opts.banner = "Usage: mpw-ssh SEARCH [options]" + + opts.on("-l", "--login LOGIN", "Force a login") do |login| + cli.login = login + end + + opts.on("-p", "--port PORT", "Force a port") do |port| + cli.port = port + end + + opts.on("-s", "--server SERVER", "Force a server") do |server| + cli.server = server + end + + opts.on("-h", "--help", "Show this message") do |b| + puts opts + exit 0 + end +end.parse! + +if ARGV.length < 1 + puts "Usage: mpw-ssh SEARCH [options]" exit 2 end -search = ARGV[0] - -cli = CliSSH.new() cli.ssh(search) exit 0