net-ssh-telnet 0.0.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 00bb9ece1f4ba5a748bc3c1c7f6a65f386c76543
4
+ data.tar.gz: 9af12f0b2318c4e1123ead13004f7223974bb9ce
5
+ SHA512:
6
+ metadata.gz: 1d6d0b0c1a9b38d5f96f0f89d4b556c69621a768629625dc3e70c7709a75819fdd480b218a9db10c2a3f53cac5a33152e4d002494a996431aec0a45edd707baf
7
+ data.tar.gz: e148e3bae70620f0413b1cab661a1b35473c8bed1e596ae5f32b92bac142bc30b8735477f49f7dbd1ccc6117e22c30433e76e1f549100f79ac7e4b7a669c6b76
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ examples/dump.log
2
+ examples/output.log
3
+ pkg
4
+ doc
5
+ *.swp
6
+ /.yardoc
7
+ /.bundle
8
+ /Gemfile.lock
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ - History.txt
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in golden_gate.gemspec
4
+ gemspec
data/History.txt CHANGED
@@ -1,8 +1,19 @@
1
+ === 0.2.0 / 2017-01-16
2
+ * Add option to change prompt after initialization
3
+ * Cleanup requires for gemspec
4
+
5
+ === 0.1.1 / 2016-05-06
6
+ * Apply fix to race condition during initialization from lumean
7
+
8
+ === 0.1.0 / 2016-02-09
9
+ * Fixed 'Timeout' and 'Waittime' options
10
+ * Fork to net-ssh-telnet2
11
+
1
12
  === 0.0.2 / 2009-03-15
2
13
 
3
14
  * 4 bugfixes from Brian Candler
4
- * Bug in original Net::Telnet EOL translation
5
- (http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/16599)
15
+ * Bug in original Net::Telnet EOL translation
16
+ (http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/16599)
6
17
  duplicate the fix.
7
18
  * Remove rubygems require.
8
19
  * Handle EOF more gracefully.
data/README.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  = net-ssh-telnet
2
2
 
3
- * http://net-ssh-telnet.rubyforge.org
4
- * mailto:mkent@magoazul.com
3
+ * https://github.com/duke-automation/net-ssh-telnet
4
+ * mailto:sean@duke.edu
5
5
 
6
6
  == DESCRIPTION:
7
7
 
@@ -20,7 +20,7 @@ Please see Net::Telnet for main documentation (included with ruby stdlib).
20
20
 
21
21
  == REQUIREMENTS:
22
22
 
23
- * net-ssh >= 2.0.1
23
+ * net-ssh >= 2.0.1
24
24
 
25
25
  == INSTALL:
26
26
 
@@ -33,6 +33,7 @@ Please see Net::Telnet for main documentation (included with ruby stdlib).
33
33
  Based on code in net/telnet.rb by Wakou Aoyama <wakou@ruby-lang.org>
34
34
  Modified to work with Net::SSH by Brian Candler <b.candler@pobox.com>
35
35
  Additional Net::SSH v2 modifications by Matthew Kent <matt@bravenet.com>
36
+ Additional Net::SSH v2 modifications by Sean Dilda <sean@duke.edu>
36
37
 
37
38
  Permission is hereby granted, free of charge, to any person obtaining
38
39
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,14 +1 @@
1
- # -*- ruby -*-
2
-
3
- require 'rubygems'
4
- require 'hoe'
5
- $:.unshift(File.dirname(__FILE__) + "/lib")
6
- require 'net/ssh/telnet'
7
-
8
- Hoe.new('net-ssh-telnet', Net::SSH::Telnet::VERSION) do |p|
9
- p.developer('Matthew Kent', 'matt@bravenet.com')
10
- p.extra_deps << ['net-ssh', '>= 2.0.1']
11
- p.remote_rdoc_dir = ''
12
- end
13
-
14
- # vim: syntax=Ruby
1
+ require "bundler/gem_tasks"
@@ -1,5 +1,5 @@
1
1
  require 'net/ssh'
2
-
2
+
3
3
  module Net
4
4
  module SSH
5
5
 
@@ -8,13 +8,12 @@ module SSH
8
8
  # Provides a simple send/expect interface with an API almost
9
9
  # identical to Net::Telnet. Please see Net::Telnet for main documentation.
10
10
  # Only the differences are documented here.
11
-
11
+
12
12
  class Telnet
13
13
 
14
14
  CR = "\015"
15
15
  LF = "\012"
16
16
  EOL = CR + LF
17
- VERSION = '0.0.2'
18
17
 
19
18
  # Wrapper to emulate the behaviour of Net::Telnet "Proxy" option, where
20
19
  # the user passes in an already-open socket
@@ -37,10 +36,10 @@ module SSH
37
36
  # as shown below.
38
37
  #
39
38
  # Note that unlike Net::Telnet there is no preprocess method automatically
40
- # setting up options related to proper character translations, so if your
41
- # remote ptty is configured differently than the typical linux one you may
42
- # need to pass in a different terminator or call 'stty' remotely to set it
43
- # into an expected mode. This is better explained by the author of perl's
39
+ # setting up options related to proper character translations, so if your
40
+ # remote ptty is configured differently than the typical linux one you may
41
+ # need to pass in a different terminator or call 'stty' remotely to set it
42
+ # into an expected mode. This is better explained by the author of perl's
44
43
  # Net::SSH::Expect here:
45
44
  #
46
45
  # http://search.cpan.org/~bnegrao/Net-SSH-Expect-1.04/lib/Net/SSH/Expect.pod
@@ -135,7 +134,26 @@ module SSH
135
134
  # )
136
135
  # puts "Logged in"
137
136
  # puts s.cmd("show alerts")
138
-
137
+ #
138
+ # New objects take a +option+ hash to set default settings. The keys for this options hash
139
+ # are all strings. A block can also be passed to constructor which will get executed after
140
+ # the first prompt is found.
141
+ #
142
+ # ==== Hash Parameters
143
+ #
144
+ # * <tt>"Host"</tt> - a string to define the hostname to connect to(Default: "localhost")
145
+ # * <tt>"Port"</tt> - port number to connect to(Default: 22)
146
+ # * <tt>"Prompt"</tt> - a regular expression to define the the prompt to expect(Default: /[$%#>] \z/n )
147
+ # * <tt>"Timeout"</tt> - the time out value passed on to Net::Ssh - also the default value for #waitfor(Default: 10)
148
+ # * <tt>"Waittime"</tt> - Max time to wait after a possible prompt it seen to make sure more data isn't coming(Default: 0)
149
+ # * <tt>"Terminator"</tt> - This value is appended to all strings that are sent to #print.(Default: LF)
150
+ # * <tt>"Binmode"</tt> - Enable binary mode.(Default: false)
151
+ # * <tt>"Output_log"</tt> - A file name to open as an output log.
152
+ # * <tt>"Dump_log"</tt> - A file name to open to dump the entire session to.
153
+ # * <tt>"Session"</tt> - An existing Net::Ssh object for Net::Ssh::Telnet to use as its connection(See example 1)
154
+ # * <tt>"Proxy"</tt> - An open IO object to use as a Proxy(See example 3)
155
+ # * <tt>"Factory"</tt> - A connection factory to use to establish the connection. Net::Ssh::Telnet will call #open(host, post) on this object.(See example 4)
156
+ #
139
157
  def initialize(options, &blk) # :yield: mesg
140
158
  @options = options
141
159
  @options["Host"] = "localhost" unless @options.has_key?("Host")
@@ -233,6 +251,9 @@ module SSH
233
251
  @eof = false
234
252
  @channel = nil
235
253
  @ssh.open_channel do |channel|
254
+ channel.on_data { |ch,data| @buf << data }
255
+ channel.on_extended_data { |ch,type,data| @buf << data if type == 1 }
256
+ channel.on_close { @eof = true }
236
257
  channel.request_pty { |ch,success|
237
258
  if success == false
238
259
  raise "Failed to open ssh pty"
@@ -247,22 +268,18 @@ module SSH
247
268
  raise "Failed to open ssh shell"
248
269
  end
249
270
  }
250
- channel.on_data { |ch,data| @buf << data }
251
- channel.on_extended_data { |ch,type,data| @buf << data if type == 1 }
252
- channel.on_close { @eof = true }
253
271
  end
254
272
  @ssh.loop
255
273
  end # initialize
256
274
 
257
275
  # Close the ssh channel, and also the entire ssh session if we
258
276
  # opened it.
259
-
260
277
  def close
261
278
  @channel.close if @channel
262
279
  @channel = nil
263
280
  @ssh.close if @close_all and @ssh
264
281
  end
265
-
282
+
266
283
  # The ssh session and channel we are using.
267
284
  attr_reader :ssh, :channel
268
285
 
@@ -289,7 +306,20 @@ module SSH
289
306
  end
290
307
 
291
308
  # Read data from the host until a certain sequence is matched.
292
-
309
+ #
310
+ # The +options+ parameter takes an string keyed option Hash or a String.
311
+ #
312
+ # A block can be provided to be called after the first prompt or match is found.
313
+ #
314
+ # ==== Hash Parameters
315
+ #
316
+ # * <tt>"Match"</tt> - Regular expression to match
317
+ # * <tt>"Prompt"</tt> - Regular expression to match (Same as "Match")
318
+ # * <tt>"String"</tt> - String to match
319
+ # * <tt>"Timeout"</tt> - Max time in seconds that can pass between packets (Default: 10 - set to false for no timeout)
320
+ # * <tt>"Waittime"</tt> - Max time to wait after a possible prompt it seen to make sure more data isn't coming(Default: 0)
321
+ # * <tt>"FailEOF"</tt> - Raise EOFError if EOF is reached on the connection.(Default: false)
322
+ #
293
323
  def waitfor(options) # :yield: recvdata
294
324
  time_out = @options["Timeout"]
295
325
  waittime = @options["Waittime"]
@@ -319,15 +349,16 @@ module SSH
319
349
  rest = ''
320
350
  sock = @ssh.transport.socket
321
351
 
322
- until prompt === line and @buf == "" and (@eof or (not sock.closed? and not IO::select([sock], nil, nil, waittime)))
323
- while @buf == "" and !@eof
324
- # timeout is covered by net-ssh
325
- begin
326
- @channel.connection.process(0.1)
327
- rescue IOError
328
- @eof = true
329
- end
352
+ until @ssh.transport.socket.available == 0 && @buf == "" && prompt === line && (@eof || (!sock.closed? && !IO::select([sock], nil, nil, waittime)))
353
+ # @buf may have content if it was processed by Net::SSH before #waitfor
354
+ # was called
355
+ # The prompt is checked in case a waittime was specified, we've already
356
+ # seen the prompt, but a protocol-level packet came through during the
357
+ # above IO::select, causing us to reprocess
358
+ if @buf == '' && (@ssh.transport.socket.available == 0) && !(prompt === line) && !IO::select([sock], nil, nil, time_out)
359
+ raise Net::ReadTimeout, "timed out while waiting for more data"
330
360
  end
361
+ _process_ssh
331
362
  if @buf != ""
332
363
  c = @buf; @buf = ""
333
364
  @dumplog.log_dump('<', c) if @options.has_key?("Dump_log")
@@ -362,10 +393,13 @@ module SSH
362
393
  # dumplog, if the Dump_log option is set.
363
394
  def write(string)
364
395
  @dumplog.log_dump('>', string) if @options.has_key?("Dump_log")
396
+ # Add string to Net:SSH output queue
365
397
  @channel.send_data string
398
+ # Call single instance of Net::SSH loop to process output queue
399
+ _process_ssh
366
400
  end
367
401
 
368
- # Sends a string to the host.
402
+ # Sends +string+ to the host.
369
403
  #
370
404
  # This does _not_ automatically append a newline to the string. Embedded
371
405
  # newlines may be converted depending upon the values of binmode or
@@ -380,21 +414,40 @@ module SSH
380
414
  end
381
415
  end
382
416
 
383
- # Sends a string to the host.
417
+ # Change the standard prompt
418
+ # This is useful if you need a special prompt value for initializing the
419
+ # session, but want to use a different prompt for the rest of the session
420
+ def prompt= val
421
+ @options["Prompt"] = val
422
+ end
423
+
424
+ # Sends +string+ to the host.
384
425
  #
385
426
  # Same as #print(), but appends a newline to the string.
386
427
  def puts(string)
387
428
  self.print(string + "\n")
388
429
  end
389
430
 
390
- # Send a command to the host.
431
+ # Sends a command to the host.
391
432
  #
392
433
  # More exactly, sends a string to the host, and reads in all received
393
434
  # data until is sees the prompt or other matched sequence.
394
435
  #
395
436
  # The command or other string will have the newline sequence appended
396
437
  # to it.
397
-
438
+ #
439
+ # The +options+ parameter takes a String or Hash. The Hash can be used to override the
440
+ # default settings that were established when the object was created.
441
+ #
442
+ # A block can be provided to be called when the first prompt or "Match" is found.
443
+ #
444
+ # ==== Hash Parameters
445
+ #
446
+ # * <tt>"String"</tt> - This string is sent over the connection via the #puts method.
447
+ # * <tt>"Match"</tt> - Passed to #waitfor as the "Prompt" parameter. See its defintion for details.
448
+ # * <tt>"Timeout"</tt> - Passed to #waitfor see its definition for details
449
+ # * <tt>"FailEOF"</tt> - Passed to #waitfor see its definition for details
450
+ #
398
451
  def cmd(options) # :yield: recvdata
399
452
  match = @options["Prompt"]
400
453
  time_out = @options["Timeout"]
@@ -417,6 +470,18 @@ module SSH
417
470
  end
418
471
  end
419
472
 
473
+ private
474
+
475
+ def _process_ssh
476
+ begin
477
+ @channel.connection.process(0)
478
+ rescue IOError
479
+ @eof = true
480
+ end
481
+ end
482
+
420
483
  end # class Telnet
421
484
  end # module SSH
422
485
  end # module Net
486
+
487
+ require 'net/ssh/telnet/version'
@@ -0,0 +1,7 @@
1
+ module Net
2
+ module SSH
3
+ class Telnet
4
+ VERSION = '0.2.0'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'net/ssh/telnet/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "net-ssh-telnet"
8
+ spec.version = Net::SSH::Telnet::VERSION
9
+ spec.authors = ["Sean Dilda"]
10
+ spec.email = ["sean@duke.edu"]
11
+ spec.description = %q{A ruby module to provide a simple send/expect interface over SSH with an API almost identical to Net::Telnet. Ideally it should be a drop in replacement. Please see Net::Telnet for main documentation (included with ruby stdlib).}
12
+ spec.summary = %q{Provides Net::Telnet API for SSH connections}
13
+ spec.homepage = "https://github.com/duke-automation/net-ssh-telnet"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.require_paths = ["lib"]
18
+ spec.extra_rdoc_files = ['README.txt', 'History.txt']
19
+
20
+ spec.add_runtime_dependency 'net-ssh', '>= 2.0.1'
21
+ spec.add_development_dependency 'rake'
22
+ end
metadata CHANGED
@@ -1,73 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: net-ssh-telnet
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  platform: ruby
6
- authors:
7
- - Matthew Kent
6
+ authors:
7
+ - Sean Dilda
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MQ4wDAYDVQQDDAVta2Vu
14
- dDEYMBYGCgmSJomT8ixkARkWCG1hZ29henVsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
- MB4XDTA4MDcyODA0NTIzMVoXDTA5MDcyODA0NTIzMVowPzEOMAwGA1UEAwwFbWtl
16
- bnQxGDAWBgoJkiaJk/IsZAEZFghtYWdvYXp1bDETMBEGCgmSJomT8ixkARkWA2Nv
17
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK9kASXLzL37znIcJoWH
18
- lE6LYK9Drf9/tTP0aMJBRwzFAL6NP4KCDTSbzRcurb2gqJI5Hz7wJBm7QQaw7jnx
19
- F+wUWEUnXF9v8BIpruFpIM+VHIMaj4h5ifSOh7lOARCn0tBHYYadxlyHhj+cROCf
20
- h8SPXUQ7Otsba/8tIjYZTh+tiru7hZApAXZRZOiGPjARwuqvcWYYstbxWOyG5hAB
21
- QHdhJD1nv03uHuCR0S/FpLmDM+REEh2PAXbvJIMkBJJ+2KP+7oWwU95/pclnEXE/
22
- e0qKZkVsaszihkvh1loxlKhU/sV0Sjo+LJ/fM7SR1a9WzSw1c1C/5Twjmq6jnaLG
23
- ZGECAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGhf
24
- 2WxIO89iFR2KfqyyXeWlUsBMMA0GCSqGSIb3DQEBBQUAA4IBAQAyvET0KFjr4Ars
25
- HvOFhZOer5jWTfGDUcKB8oOfLhbs7PANVNv0BARxgH0Dj95kTcIfSvQLWfv5OmqC
26
- AT3P6hPV6WbRCJOGPy0jeZcKWgPepl8vqnBciqzB8beBXmYmEe097MNvnlZptqU5
27
- If5GWrjlRoeYpRDNpMpaN4UFxsb/I4MGYvbnrEVc6Ev1ztgK5Kci8oYcINjUhCls
28
- EOmi6kiwQNdHUW0XLqwGanEip196lyE5IHRylQ5UiwYI0T4hDSc9f0SE+dzENdFw
29
- doMOs6odERAAmX+M7PQ4i3Zvs+Jv9SazZBcl8+sohZL3I5A1fkNQXts1hV6TObce
30
- T6VhSPds
31
- -----END CERTIFICATE-----
32
-
33
- date: 2009-03-15 00:00:00 -07:00
34
- default_executable:
35
- dependencies:
36
- - !ruby/object:Gem::Dependency
10
+ cert_chain: []
11
+ date: 2017-04-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
37
14
  name: net-ssh
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.1
38
20
  type: :runtime
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
41
- requirements:
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
42
24
  - - ">="
43
- - !ruby/object:Gem::Version
25
+ - !ruby/object:Gem::Version
44
26
  version: 2.0.1
45
- version:
46
- - !ruby/object:Gem::Dependency
47
- name: hoe
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
48
34
  type: :development
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
52
38
  - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 1.7.0
55
- version:
56
- description: A ruby module to provide a simple send/expect interface over SSH with an API almost identical to Net::Telnet. Ideally it should be a drop in replacement. Please see Net::Telnet for main documentation (included with ruby stdlib).
57
- email:
58
- - matt@bravenet.com
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A ruby module to provide a simple send/expect interface over SSH with
42
+ an API almost identical to Net::Telnet. Ideally it should be a drop in replacement.
43
+ Please see Net::Telnet for main documentation (included with ruby stdlib).
44
+ email:
45
+ - sean@duke.edu
59
46
  executables: []
60
-
61
47
  extensions: []
62
-
63
- extra_rdoc_files:
64
- - History.txt
65
- - Manifest.txt
48
+ extra_rdoc_files:
66
49
  - README.txt
67
- - Todo.txt
68
- files:
69
50
  - History.txt
70
- - Manifest.txt
51
+ files:
52
+ - ".gitignore"
53
+ - ".yardopts"
54
+ - Gemfile
55
+ - History.txt
71
56
  - README.txt
72
57
  - Rakefile
73
58
  - Todo.txt
@@ -76,33 +61,31 @@ files:
76
61
  - examples/get_hostname.rb
77
62
  - examples/non_standard_shell.rb
78
63
  - lib/net/ssh/telnet.rb
64
+ - lib/net/ssh/telnet/version.rb
65
+ - net-ssh-telnet.gemspec
79
66
  - test/test_net-ssh-telnet.rb
80
- has_rdoc: true
81
- homepage: http://net-ssh-telnet.rubyforge.org
67
+ homepage: https://github.com/duke-automation/net-ssh-telnet
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
82
71
  post_install_message:
83
- rdoc_options:
84
- - --main
85
- - README.txt
86
- require_paths:
72
+ rdoc_options: []
73
+ require_paths:
87
74
  - lib
88
- required_ruby_version: !ruby/object:Gem::Requirement
89
- requirements:
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
90
77
  - - ">="
91
- - !ruby/object:Gem::Version
92
- version: "0"
93
- version:
94
- required_rubygems_version: !ruby/object:Gem::Requirement
95
- requirements:
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
96
82
  - - ">="
97
- - !ruby/object:Gem::Version
98
- version: "0"
99
- version:
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
100
85
  requirements: []
101
-
102
- rubyforge_project: net-ssh-telnet
103
- rubygems_version: 1.2.0
86
+ rubyforge_project:
87
+ rubygems_version: 2.5.1
104
88
  signing_key:
105
- specification_version: 2
106
- summary: A ruby module to provide a simple send/expect interface over SSH with an API almost identical to Net::Telnet
107
- test_files:
108
- - test/test_net-ssh-telnet.rb
89
+ specification_version: 4
90
+ summary: Provides Net::Telnet API for SSH connections
91
+ test_files: []
data.tar.gz.sig DELETED
@@ -1 +0,0 @@
1
- "�4��JWy�,���]�<^����F~'�OI�\#_�'��ս��Y&M�L�)���Cޟ{����%��*�~�=��z8��g�K��G*�4�cM����(�Й���x|��8���&�Dÿ��?��ɗf�P�kyGX�! ��,�$oۚ�#�ݯ���w�|�
data/Manifest.txt DELETED
@@ -1,11 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- README.txt
4
- Rakefile
5
- Todo.txt
6
- examples/detailed_debug.rb
7
- examples/get_disk_info.rb
8
- examples/get_hostname.rb
9
- examples/non_standard_shell.rb
10
- lib/net/ssh/telnet.rb
11
- test/test_net-ssh-telnet.rb
metadata.gz.sig DELETED
Binary file