Sha256: 0dea1171828e49d713c544795523ab648e9197f6c8c4f2a3165b8621c10916df

Contents?: true

Size: 1.54 KB

Versions: 5

Compression:

Stored size: 1.54 KB

Contents

require 'mj/tools/subprocess.rb'

module MJ; module Tools

    class SSH

        include MJ::Tools::SubProcess

        @keys_added = []

        def self.has_keys?
            return ! @keys_added.empty?
        end

        def self.keys
            return @keys_added
        end

        def self.add_key( key_file )
            if @keys_added.index( key_file )
                return true
            end
            if ssh_add( "#{key_file}" ) == 0
                @keys_added << key_file
                return true
            end
            return false
        end

        def self.cleanup
            @keys_added.each do |file|
                self.remove_key( file )
            end
            @keys_added = []
        end

        def self.has_key?( key_file )
            if @keys_added.index( key_file )
                return true
            end
            found = false
            ssh_add '-l' do
                |line|
                if line.index(key_file)
                    return found = true
                end
            end
            return found
        end

        def self.remove_key( key_file )
            ssh_add( "-d #{key_file}" )
        end

        def self.remove_all_keys
            ssh_add( "-D" )
        end

        def self.list_keys
            ssh_add( "-l" )
        end

        def self.ssh_add( command,  &block )
            if block_given?
                self.execute "ssh-add #{command}", &block
            else
                self.execute "ssh-add #{command}"
            end
        end

    end

end; end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
build-tool-0.5.7 lib/mj/tools/ssh.rb
build-tool-0.5.6 lib/mj/tools/ssh.rb
build-tool-0.5.5 lib/mj/tools/ssh.rb
build-tool-0.5.4 lib/mj/tools/ssh.rb
build-tool-0.5.3 lib/mj/tools/ssh.rb