em-ssh 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/em-ssh/shell.rb +19 -12
- data/lib/em-ssh/version.rb +1 -1
- metadata +3 -3
data/lib/em-ssh/shell.rb
CHANGED
@@ -31,7 +31,9 @@ module EventMachine
|
|
31
31
|
TIMEOUT = 15
|
32
32
|
# @return [Net::SSH::Connection::Channel] The shell to which we can send_data
|
33
33
|
attr_reader :shell
|
34
|
-
# @return [
|
34
|
+
# @return [EM::Ssh::Session]
|
35
|
+
attr_reader :session
|
36
|
+
# @return [EM::Ssh::Connection]
|
35
37
|
attr_reader :connection
|
36
38
|
# @return [Hash] the options passed to initialize
|
37
39
|
attr_reader :options
|
@@ -70,7 +72,7 @@ module EventMachine
|
|
70
72
|
@pass = pass
|
71
73
|
@options = opts
|
72
74
|
@connect_opts = {:password => pass, :port => 22, :auth_methods => ['publickey', 'password']}.merge(opts[:net_ssh] || {})
|
73
|
-
@
|
75
|
+
@session = opts[:session]
|
74
76
|
@parent = opts[:parent]
|
75
77
|
@children = []
|
76
78
|
@reconnect = opts[:reconnect]
|
@@ -93,12 +95,12 @@ module EventMachine
|
|
93
95
|
# Disconnected shells cannot be split.
|
94
96
|
def disconnect
|
95
97
|
close
|
96
|
-
|
98
|
+
session && session.close
|
97
99
|
end
|
98
100
|
|
99
|
-
# @return [Boolean] true if the
|
101
|
+
# @return [Boolean] true if the session is still alive
|
100
102
|
def connected?
|
101
|
-
|
103
|
+
session && !session.closed?
|
102
104
|
end
|
103
105
|
|
104
106
|
# Close this shell and all children.
|
@@ -230,7 +232,7 @@ module EventMachine
|
|
230
232
|
|
231
233
|
begin
|
232
234
|
connect
|
233
|
-
|
235
|
+
session.open_channel do |channel|
|
234
236
|
debug "**** channel open: #{channel}"
|
235
237
|
channel.request_pty(options[:pty] || {}) do |pty,suc|
|
236
238
|
debug "***** pty open: #{pty}; suc: #{suc}"
|
@@ -244,7 +246,7 @@ module EventMachine
|
|
244
246
|
@shell.on_data do |ch,data|
|
245
247
|
@buffer += data
|
246
248
|
debug("data: #{@buffer.dump}")
|
247
|
-
fire(:data)
|
249
|
+
fire(:data, data)
|
248
250
|
end
|
249
251
|
Fiber.new { yield(self) if block_given? }.resume
|
250
252
|
f.resume(self)
|
@@ -266,7 +268,7 @@ module EventMachine
|
|
266
268
|
# @return [Shell] child
|
267
269
|
def split
|
268
270
|
connect unless connected?
|
269
|
-
child = self.class.new(host, user, pass, {:
|
271
|
+
child = self.class.new(host, user, pass, {:session => session, :parent => self}.merge(options))
|
270
272
|
child.line_terminator = line_terminator
|
271
273
|
children.push(child)
|
272
274
|
child.on(:closed) do
|
@@ -281,12 +283,13 @@ module EventMachine
|
|
281
283
|
# Does not open the shell; use #open or #split
|
282
284
|
# You generally won't need to call this on your own.
|
283
285
|
def connect
|
284
|
-
return @
|
286
|
+
return @session if connected?
|
285
287
|
trace = caller
|
286
288
|
f = Fiber.current
|
287
289
|
::EM::Ssh.start(host, user, connect_opts) do |connection|
|
290
|
+
@connection = connection
|
288
291
|
connection.callback do |ssh|
|
289
|
-
f.resume(@
|
292
|
+
f.resume(@session = ssh)
|
290
293
|
end
|
291
294
|
connection.errback do |e|
|
292
295
|
e.set_backtrace(trace + Array(e.backtrace))
|
@@ -301,8 +304,12 @@ module EventMachine
|
|
301
304
|
# You generally don't need to call this.
|
302
305
|
# @see #send_and_wait
|
303
306
|
# @param [String] d the data to send encoded as a string
|
304
|
-
def send_data(d)
|
305
|
-
|
307
|
+
def send_data(d, send_newline=true)
|
308
|
+
if send_newline
|
309
|
+
shell.send_data("#{d}#{line_terminator}")
|
310
|
+
else
|
311
|
+
shell.send_data("#{d}")
|
312
|
+
end
|
306
313
|
end
|
307
314
|
|
308
315
|
|
data/lib/em-ssh/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: 1.3.6
|
119
119
|
requirements: []
|
120
120
|
rubyforge_project:
|
121
|
-
rubygems_version: 1.8.
|
121
|
+
rubygems_version: 1.8.24
|
122
122
|
signing_key:
|
123
123
|
specification_version: 3
|
124
124
|
summary: An EventMachine compatible net-ssh
|