Module: MallCop

Defined in:
lib/mallcop.rb,
lib/mallcop/shell.rb,
lib/mallcop/channel.rb,
lib/mallcop/session.rb,
ext/mallcop/mallcop.c

Defined Under Namespace

Classes: Channel, ChannelError, ConnectionError, RuntimeError, Session, SessionError, Shell

Constant Summary collapse

VERSION =
'1.0.0'
ERROR_ALLOC =
INT2FIX(LIBSSH2_ERROR_ALLOC)
ERROR_BANNER_SEND =
INT2FIX(LIBSSH2_ERROR_BANNER_SEND)
ERROR_CHANNEL_FAILURE =
INT2FIX(LIBSSH2_ERROR_CHANNEL_FAILURE)
ERROR_EAGAIN =
INT2FIX(LIBSSH2_ERROR_EAGAIN)
ERROR_KEX_FAILURE =
INT2FIX(LIBSSH2_ERROR_KEX_FAILURE)
ERROR_SOCKET_DISCONNECT =
INT2FIX(LIBSSH2_ERROR_SOCKET_DISCONNECT)
ERROR_SOCKET_NONE =
INT2FIX(LIBSSH2_ERROR_SOCKET_NONE)
ERROR_SOCKET_SEND =
INT2FIX(LIBSSH2_ERROR_SOCKET_SEND)
ERROR_PROTO =
INT2FIX(LIBSSH2_ERROR_PROTO)
HASH_SHA1 =
INT2FIX(LIBSSH2_HOSTKEY_HASH_SHA1)

Class Method Summary collapse

Class Method Details

.connect(host, username, options = {}) ⇒ Object

Establishes a connection to the SSH server.

Arguments

host The host to connect to username The username to connect under.

Optional: options

:port     The port to connect on (defaults to 22)
:password Use a password based authentication strategy.


26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mallcop.rb', line 26

def self.connect(host, username, options = {})
  session = Session.start(host, options[:port] || 22)

  unless session.authenticate username, options
    raise ChannelError, "Could not authenticate user '#{username}'"
  end

  if block_given?
    yield session
    session.disconnect("Closing session")
  end

  session
end

.shell(host, username, options = {}) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/mallcop.rb', line 41

def self.shell(host, username, options = {})
  connect(host, username, options) do |session|
    shell = Shell.new(session)
    yield shell
    shell.cleanup
  end
end