net-ssh/net-sftp — Issue #10: hangs and garbage filenames
Author: peymano
Created: 2011-12-21 00:33:28+00:00
State: open

I've got a simple script for enumerating files on an SFTP server and downloading a subset of the files there. Sometimes the script works. Other times, it hangs. I've attached the output running w/ `:verbose => :debug`. I print the names of the files found with `puts " found: #{obj.name}"` -- notice that the first file name is fine, but the 2nd is blank (!), and the 3rd is garbage. Further down, the script hangs after "sent 52 bytes".

The relevant part of my script is:

sftp.dir.foreach('.') do |obj|
puts " found: #{obj.name}" if obj.name
next unless obj.file?
next unless obj.name.present?
next unless obj.name.match(/^trf\-/) # only files matching "trf-*"
...save the file name...
end

Gem version:
net-sftp (2.0.5)
net-ssh (>= 2.0.9)

I'm on a Mac running OS X Lion. The SFTP server is Debian etch running
OpenSSH 4.3p2.

```text
negotiating protocol version
remote is `SSH-2.0-OpenSSH_4.3p2 Debian-9etch3'
local is `SSH-2.0-Ruby/Net::SSH_2.2.1 x86_64-linux'
read 704 bytes
received packet nr 0 type 20 len 700
got KEXINIT from server
sending KEXINIT
queueing packet nr 0 type 20 len 556
sent 560 bytes
negotiating algorithms
negotiated:
* kex: diffie-hellman-group-exchange-sha1
* host_key: ssh-rsa
* encryption_server: aes128-cbc
* encryption_client: aes128-cbc
* hmac_client: hmac-sha1
* hmac_server: hmac-sha1
* compression_client: none
* compression_server: none
* language_client:
* language_server:
exchanging keys
queueing packet nr 1 type 34 len 20
sent 24 bytes
read 152 bytes
received packet nr 1 type 31 len 148
queueing packet nr 2 type 32 len 140
sent 144 bytes
read 720 bytes
received packet nr 2 type 33 len 700
queueing packet nr 3 type 21 len 20
sent 24 bytes
received packet nr 3 type 21 len 12
beginning authentication of `health123'
queueing packet nr 4 type 5 len 28
sent 52 bytes
read 52 bytes
received packet nr 4 type 6 len 28
trying publickey
connecting to ssh-agent
could not connect to ssh-agent
trying publickey (d3:be:2f:eb:bd:61:15:0d:62:8c:65:d1:53:9c:28:a8)
queueing packet nr 5 type 50 len 348
sent 372 bytes
read 324 bytes
received packet nr 5 type 60 len 300
queueing packet nr 6 type 50 len 620
sent 644 bytes
read 36 bytes
received packet nr 6 type 52 len 12
publickey succeeded (d3:be:2f:eb:bd:61:15:0d:62:8c:65:d1:53:9c:28:a8)
queueing packet nr 7 type 90 len 44
sent 68 bytes
read 52 bytes
received packet nr 7 type 91 len 28
channel_open_confirmation: 0 0 0 32768
requesting sftp subsystem
sending channel request "subsystem"
queueing packet nr 8 type 98 len 44
sent 68 bytes
read 88 bytes
received packet nr 8 type 93 len 28
channel_window_adjust: 0 +131072
received packet nr 9 type 99 len 12
channel_success: 0
sftp subsystem successfully started
queueing packet nr 9 type 94 len 28
sent 52 bytes
read 148 bytes
received packet nr 10 type 94 len 124
channel_data: 0 95b
received sftp packet 2 len 91
negotiating sftp protocol version, mine is 6
server reports sftp version 5
negotiated version is 5
sending opendir packet (0)
queueing packet nr 10 type 94 len 28
sent 52 bytes
read 52 bytes
received packet nr 11 type 94 len 28
channel_data: 0 14b
received sftp packet 102 len 10
sending readdir packet (1)
queueing packet nr 11 type 94 len 28
sent 52 bytes
read 964 bytes
received packet nr 12 type 94 len 940
channel_data: 0 918b
received sftp packet 104 len 914
found: h123-20111117-044053.csv
found:
found: csv?? health123chadm??N?#?N???N???h123-20111202-023549.csv??
health123chadm??N?9?N?9?N?9?h123-20111201-200033.csv??
health123chadm??N?$N???N???h123-20111202-030147.csv??
health123chadm??N???N???N???..?
health123chadmE?N?CqN???N???h123-20111202-025247.csv??
health123chadm??N?=N?=N?=.?
health123chadmE?N?CqN???N???h123-20111202-025952.csv??
health123chadm??N??*N??*N??*h123-20111202-030227.csv??
health123chadm??N???N???N???
sending readdir packet (2)
queueing packet nr 12 type 94 len 28
sent 52 bytes
read 84 bytes
received packet nr 13 type 94 len 60
channel_data: 0 34b
received sftp packet 101 len 30
sending close packet (3)
queueing packet nr 13 type 94 len 28
sent 52 bytes
read 68 bytes
received packet nr 14 type 94 len 44
channel_data: 0 30b
received sftp packet 101 len 26
closing remaining channels (1 open)
queueing packet nr 14 type 97 len 28
sent 52 bytes
```